使用不同的选项为不同的目标构建相同的文件

发布于 2024-12-11 09:08:11 字数 819 浏览 0 评论 0原文

我有一个“辅助”文件包含在两个“主”文件中,这两个文件被构建到具有相同 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

日裸衫吸 2024-12-18 09:08:11

您将需要两个不同的目标文件(main1-helper.o 和 main2-helper.o)和特定于目标的编译器标志:

 main1: CXXFLAGS=-DDEBUG_PRINT
 %.o: %.cpp
      gcc $(CXXFLAGS) -g -o $@ -c 
lt;

注意:这会给您带来从 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:

 main1: CXXFLAGS=-DDEBUG_PRINT
 %.o: %.cpp
      gcc $(CXXFLAGS) -g -o $@ -c 
lt;

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文