(make/g++)包含自动生成的依赖目标的完整路径?(或方法)
(make/g++) include full path of auto-generated dependency targets? (or workaround)
[短版]我不能有两个源文件具有相同的名称在我的单元测试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。在自动生成的依赖项列表中。是否有一种方法可以强制g++给出完整的路径,或者我是否需要将测试文件的名称更改为如下内容:
test/src/os/event_handler_test.cpp
我无法在网上或文档中找到任何东西。
有两种解决方案。
- 使用-MMD一步编译和创建依赖项,这将生成与目标文件对应的。d文件。
- 在生成先决条件时使用-MT或-MQ指定对象的路径。
我个人更喜欢MMD解决方案,因为它也倾向于更好地处理有bug的头文件。见http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html
相关文章:
- 内存效率表示最短路径的方法?
- 有没有一种简单的方法可以从 c++ 中的路径获取文件名?
- 获取 exe 文件夹路径的最佳方法?
- 返回混合 \ 和 / 的文件系统路径字符串方法
- 有没有一种方法可以使用弗洛伊德-沃歇尔算法给出最短路径,其中存在负权重循环而不允许重叠边缘?
- 尝试使用窗口注册表中的路径和 DeleteFile() 方法删除.exe文件
- 包含一批库和目录路径以"Include Additional Directories"视觉C++的任意方法
- 以独立于路径/安装/构建的方式了解资源路径的好方法
- 确定两个文件路径引用同一文件对象的最佳方法是什么
- 在C++中编译时提供库路径的更好方法
- 有没有更好的方法来通过 C/C++ 中的环境变量创建路径
- 从net.connman.Manager的GetService方法动态提取D-Bus参数和对象路径
- 传递给库方法时,IOS文件路径空间被拆分
- 有什么方法不需要在 Xcode 中使用文件的完整路径?[C/C++]
- SHGetFolderPath 已弃用:检索 Windows 文件夹路径的替代方法是什么
- 是否有方法将相对库路径添加到可执行文件以避免设置LD_library_path
- 确定使用dlopen打开的动态库的路径的可移植方法
- 在 c++ 中,知道路径是否引用文件夹或文件的最便宜的方法是什么?
- 将filesystem::path元素附加到另一个路径的最佳方法是什么?
- (make/g++)包含自动生成的依赖目标的完整路径?(或方法)