我有两个“主”文件中包含一个“helper”文件,这两个文件内置于两个具有相同makefile的可执行文件中。我在帮助文件中调试了print语句。我希望print语句实际上打印在一个可执行文件中,而不是另一个。有办法吗?现在我有以下内容,我希望编译为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 $<
答案 0 :(得分:4)
您将需要两个不同的目标文件(main1-helper.o和main2-helper.o)和特定于目标的编译器标志:
main1: CXXFLAGS=-DDEBUG_PRINT
%.o: %.cpp
gcc $(CXXFLAGS) -g -o $@ -c $<
注意:这使您无法从helper.o生成main1-helper.o。有几种方法可以解决这个问题;但是,从一开始就使用automake而不是滚动自己的解决方案可能会更舒服。