我有几个 .cpp 文件,每个文件都单独编译成自己的可执行文件,我还想在主可执行文件中使用每个文件中的函数和 .h。我该怎么做呢?
生成文件
all: A B C
g++ -o main.exe -std=c++11 A.cpp B.cpp C.cpp
A: A.cpp
g++ -o A.exe -std=c++11 A.cpp
B: B.cpp
g++ -o B.exe -std=c++11 B.cpp
C: C.cpp
g++ -o C.exe -std=c++11 C.cpp
最佳答案
一个 C 程序不能有两个同名的函数,main
在这方面并不特殊。
我的建议是将 main
函数分离到它们自己的 CPP 文件中,并在公共(public)文件中仅保留实用程序可重用函数:
all: A B C
g++ -o main.exe -std=c++11 all_main.cpp A.cpp B.cpp C.cpp
A: A.cpp
g++ -o A.exe -std=c++11 A_main.cpp A.cpp
B: B.cpp
g++ -o B.exe -std=c++11 B_main.cpp B.cpp
C: C.cpp
g++ -o C.exe -std=c++11 C_main.cpp C.cpp
另一种方法是使用条件编译来跳过不需要的 main
定义。但这会很困惑。
类似于:
A.cpp
void funA()
{ /*...*/ }
#ifdef A_EXE
int main()
{
}
#endif
然后在makefile
中:
A: A.cpp
g++ -o A.exe -std=c++11 -DA_EXE A.cpp
这种条件编译技巧的使用,虽然有点 hacky 且不太可扩展,但有时用于在库代码中提供小型测试用例或示例程序。
关于c++ - g++ makefile,多个cpp,每个都有自己的main(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33769589/