c++ - 使用 g++ 编译多个 .cpp 和 .h 文件。我做对了吗?

标签 c++ gcc compilation g++

假设我有这些文件: main.cpp, ClassA.cpp, ClassA.h, ClassB.cpp, ClassB.h

  • 主要有 #include "ClassA.h"#include "ClassB.h" 并且每个 .cpp 文件包含其各自的.h 文件。这是正确的吗?

现在我正在使用 g++ *.cpp 进行编译,之后我得到一个可执行文件 a.exe (Windows)

  • 我的问题是这是正确的方法吗?假设我只对一个文件(cpp 或 h)进行更改,此命令是否还会重新编译未更改的文件(因为我在文件夹中看不到除 a.exe 之外的新文件)?请解释。另外,我该如何防止这种情况发生?

P.S 我不熟悉 make,也不想使用它,所以请不要在答案中提及它,我阅读了 Using G++ to compile multiple .cpp and .h files但我需要更多关于我的问题的解释。

最佳答案

如果你想手动做,你可以将你所有的.cpp文件编译成目标文件

g++ -c *.cpp

并链接所有目标文件

g++ *.o -o a.out

如果ClassA.cpp有改动,重新编译ClassA.cpp即可

g++ -c ClassA.cpp

然后再次链接它们

g++ *.o -o a.out

至少,您不需要重新编译未更改的.cpp 文件。

关于c++ - 使用 g++ 编译多个 .cpp 和 .h 文件。我做对了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26814485/

相关文章:

c++ - 带 bo​​ost::atomic 的无锁队列——我这样做对吗?

c++ - 为什么这个代码片段用 VS2010 编译而不用 GCC 4.5.2?

c++ - gcc -fdiagnostics-colour 是否在 Windows 上运行?

c++ - 如果我比较 double ,如何让 gcc 生成警告?

c - 未调用的静态 c 函数会发生什么

c++ - 在openGL中多次绑定(bind)缓冲区

c++ - 点到体素映射的优化

c++ - 利用 sandy bridge 的硬件真随机数生成器?

c - 是否可以通过向 gcc 传递参数来声明弱函数?

c++ - 使用 Visual Studio Shell(独立)2015 编译