【问题标题】:How to compile a project with clases in Clang?如何用 Clang 中的类编译项目?
【发布时间】:2021-04-18 02:22:21
【问题描述】:

看到这个帖子: How do you compile a C++ program with multiple class files from OS X Terminal? 我看到用gcc 编译一个带有类(带有.h 和.cpp)的项目很简单:

g++ [所有源文件列表] -o [executableName]

它实际上对我有用,但是当我尝试使用 Clang:

clang++-11 main.cpp Person.hpp Person.cpp -o main

我明白了:

clang: error: cannot specify -o when generating multiple output files

注意:我知道如何使用Makefile,但我想有一个快速的方法来编译Clang,就像gcc一样。

【问题讨论】:

  • 请发布完整的 clang 命令及其输出
  • clang 通常接受与 g++ 相同的命令行语法。我怀疑你在 clang 命令行中打错了,所以如果你没有发现它,请发布你使用的确切命令行。
  • @anki @NateEldredge clang++-11 main.cpp Person.hpp Person.cpp -o main 输出:clang: error: cannot specify -o when generating multiple output files 请注意,如果我将“clang++-11”更改为“g++”,它会编译
  • 尝试在命令行中不包含标题。
  • 不要编译标头。它们应通过#include添加。

标签: c++ compilation clang


【解决方案1】:

如果您使用头文件运行clang++-11 main.cpp Person.hpp Person.cpp -o main,clang 会注意到这一点并编译预编译的头文件“Person.pch”,默认的 -o Person.pch 是隐含的。同时,您还想获得另一个输出文件“main”。因此,clang 抱怨它不能生成多个输出文件,-o Person.pch 和 -o main。

预编译的头文件应该单独编译。

clang++-11 Person.hpp
clang++-11 main.cpp Person.cpp -o main

第一步不是必须的,如果跳过,则不使用预编译的头文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 2012-02-27
    • 1970-01-01
    • 2019-07-07
    相关资源
    最近更新 更多