【问题标题】:How to include and compile multiple C++ files? [closed]如何包含和编译多个 C++ 文件? [关闭]
【发布时间】:2017-05-08 13:44:26
【问题描述】:

我有这些文件:classA.cppclassA.hclassB.cppclassB.hmain.cpp
所有需要的库都包含在两个 .h 文件中。

main.cpp 中,我包括classA.cppclassB.cpp
classB.cpp 我包括classB.hclassA.cpp 它是classA.h

我自己编译的

g++ main.cpp

(+一些不重要的东西)并且它运行良好。

但我几乎可以肯定,在我们的讲座中,我们被告知要以不同的方式进行,遗憾的是我现在找不到。
这是包括编译的最佳方式吗?如果不是,是什么?

【问题讨论】:

  • 为什么要包含来自其他 cpp 文件的 cpp 文件?您已经创建了一个巨大的翻译单元。您正在使用哪本 C++ 书籍?这都在里面解释了。
  • @TGar 你总是可以在课外学习。互联网有很多资源。
  • “我没有书” 那么问题来了。没有书,没有讲义……没有学习资源你怎么能学!
  • 您无法从参考文献中学习该语言。这里有一些书:stackoverflow.com/q/388242/560648“如何包含”对于 SO Q&A 来说太宽泛了。祝你好运!
  • 询问“最佳方式”的问题往往被视为“主要基于意见”。在一种情况下最好的东西不一定在其他地方最好!

标签: c++ compilation include


【解决方案1】:

简单的方法:g++ main.cpp ClassA.cpp ClassB.cpp etc.cpp 更高级的方式应该使用makefile。 enter link description here

【讨论】:

  • 您可能还应该提到在 main.cpp 中包含标头而不是 cpp 文件..
  • 我会说这真的不是答案,因为它没有“回答”你的问题 Is this the best way of including and compiling? If not, what is? 这根本没有解释任何关于包含的内容。
【解决方案2】:

通常您不会将源文件包含到其他源文件中。事实上,我们有头文件的原因是我们可以在所有文件中使用相同的声明,同时只编译一次定义

所以你的main.cpp 应该包括classA.hclassB.h 而不是classA.cppclassB.cpp

#include "classA.h"
#include "classB.h"

#include <algorithm> // and whatever else you need

int main()
{
    // your code....
}

然后写一个简单的Makefile:

CXXFLAGS += -Wall -Wextra

main: main.o classA.o classB.o
    $(LINK.cpp) $(OUTPUT_OPTION) $^

main.o: main.cpp
main.o: classA.h
main.o: classB.h

classA.o: classA.cpp classA.h

classB.o: classB.cpp classB.h

对于较大的项目,您可以编写规则以自动从源文件创建依赖项,但我们可以通过手动生成它们来像上面一样开始。

现在,执行时会运行正确的命令

make

【讨论】:

    猜你喜欢
    • 2022-12-01
    • 2021-11-14
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多