gpt4 book ai didi

c++ - (make/g++) 包括自动生成的依赖目标的完整路径? (或解决方法)

转载 作者:行者123 更新时间:2023-11-30 04:20:25 25 4
gpt4 key购买 nike

[简短版]我的单元测试 C++ 项目中不能有两个同名的源文件,即使它们位于不同的文件夹中。 g++ 和 make 彼此脾气暴躁。 (或者也许我是愚蠢的)

[长版]我的 make/g++/gtest 设置遇到了问题。当 g++ 自动生成依赖项时,它会生成如下内容:

event_handler.o: src/os/event_handler.h src/os/event.h

但我需要这样的东西(目标的完整路径):

src/os/event_handler.o: src/os/event_handler.h src/os/event.h

原因是当我有这样一个文件时:

src/os/event_handler.cpp // contains EventHandler class

我有一个这样的配套文件:

test/src/os/event_handler.cpp // contains EventHandlerTest unit test class

... 所以他们的 .o 文件都在自动生成的依赖列表中显示为 event_handler.o。有没有办法强制 g++ 提供完整路径,或者我是否需要将测试文件的名称更改为类似以下内容:

test/src/os/event_handler_test.cpp

我无法在网上或文档中找到任何内容。

最佳答案

有两种解决方案。

  1. 使用-MMD一步编译创建依赖,生成目标文件对应的.d文件。
  2. 在生成先决条件时使用 -MT 或 -MQ 指定对象的路径。

我个人更喜欢 MMD 解决方案,因为它也倾向于更好地处理有问题的头文件。参见 http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html

关于c++ - (make/g++) 包括自动生成的依赖目标的完整路径? (或解决方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15318744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com