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

piz*_*Guy 5 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 之外的新文件)?请解释。另外我该如何防止?

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

Pet*_* Li 7

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

g++ -c *.cpp
Run Code Online (Sandbox Code Playgroud)

并链接所有目标文件

g++ *.o -o a.out
Run Code Online (Sandbox Code Playgroud)

如果 ClassA.cpp 改变了,你可以重新编译 ClassA.cpp

g++ -c ClassA.cpp
Run Code Online (Sandbox Code Playgroud)

并再次链接它们

g++ *.o -o a.out
Run Code Online (Sandbox Code Playgroud)

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