使用不同的选项为不同的目标构建相同的文件
我有一个“辅助”文件包含在两个“主”文件中,这两个文件被构建到具有相同 makefile 的两个可执行文件中。我在帮助程序文件中有调试打印语句。我希望打印语句实际上打印在一个可执行文件中,而不是另一个可执行文件中。有办法做到吗?现在我有以下内容,我希望使用为一个可执行文件定义的 DEBUG_PRINT 进行编译,但不为另一个可执行文件定义,但我不知道如何进行。
main1.cpp: <代码>
#include "helper.h"
...
main2.cpp: <代码>
#include "helper.h"
...
助手.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 $<
I have one "helper" file included in two "main" files which are built into two executables with the same makefile. I have debug print statements in the helper file. I want the print statements to actually be printed in one executable, but not the other. Is there a way to do it? Right now I have the following, and I was hoping to compile with DEBUG_PRINT defined for one executable but not the other, but I don't see how.
main1.cpp:
#include "helper.h" ...
main2.cpp:
#include "helper.h" ...
helper.cpp:
#ifdef DEBUG_PRINT cout << "here is a debug message" << endl; #endif
Makefile:
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 lt;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您将需要两个不同的目标文件(main1-helper.o 和 main2-helper.o)和特定于目标的编译器标志:
注意:这会给您带来从 helper.o 生成 main1-helper.o 的问题。有几种方法可以解决这个问题;但是,您可能更愿意从一开始就使用 automake,而不是推出自己的解决方案。
You will need two different object files (main1-helper.o and main2-helper.o) and target-specific compiler flags:
Note: This leaves you with the problem of generating main1-helper.o from helper.o. There are a few ways to solve this; however, you might be more comfortable using automake from the start instead of rolling your own solutions.