我在两个“主要”文件中包含一个“帮助程序”文件,这两个“主要”文件被构建到具有相同生成文件的两个可执行文件中。我在帮助文件中有调试打印语句。我希望打印语句实际上打印在一个可执行文件中,而不是另一个。有办法吗?现在我有以下内容,我希望使用为一个可执行文件而不是另一个定义的 DEBUG_PRINT 进行编译,但我不知道如何进行编译。
main1.cpp:
#include "helper.h"
...
main2.cpp:
#include "helper.h"
...
helper.cpp:
#ifdef DEBUG_PRINT
cout << "here is a debug message" << endl;
#endif
生成文件:
build: main1 main2
main1: main1.o helper.o
g++ -g -o main1 main1.o helper.o
main2: main2.o helper.o
g++ -g -o main2 main2.o helper.o
%.o: %.cpp
gcc -g -c $<
最佳答案
您将需要两个不同的目标文件(main1-helper.o 和 main2-helper.o)和目标特定的编译器标志:
main1: CXXFLAGS=-DDEBUG_PRINT
%.o: %.cpp
gcc $(CXXFLAGS) -g -o $@ -c $<
注意:这给您留下了从 helper.o 生成 main1-helper.o 的问题。有几种方法可以解决这个问题;但是,您可能更愿意从一开始就使用 automake 而不是推出自己的解决方案。
关于c++ - 使用不同的选项为不同的目标构建相同的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7852500/