【发布时间】:2014-06-03 08:52:22
【问题描述】:
在我使用的库中存在一个问题:所有路径都是相对的。
我的意思是,来自path1/path2/file.h 的文件有#include "interface.h",它(接口)位于anotherpath/anotherpath2/interface.h。
有什么方法可以强制链接器在不同目录中查找包含?
【问题讨论】:
在我使用的库中存在一个问题:所有路径都是相对的。
我的意思是,来自path1/path2/file.h 的文件有#include "interface.h",它(接口)位于anotherpath/anotherpath2/interface.h。
有什么方法可以强制链接器在不同目录中查找包含?
【问题讨论】:
链接器不关心头文件。这是您正在查看的编译器。 (要真的吹毛求疵,它是预处理器。;-))
CMake 有 include_directories() 命令:
include_directories( "anotherpath/anotherpath2" )
在./CMakeLists.txt 中,这将使#include "interface.h" 成为可能。
但这真的是你想要的吗?通常,目录用于分隔模块。 #include "anotherpath/anotherpath2/interface.h" 将发送更加更清晰的信息,说明此处实际包含的内容,以及人类可以在哪里找到该头文件以查找其声明。也许重构您的包含语句会比在 CMake 配置中添加大量包含目录更好...
一般来说,您的问题非常提供了很少的背景信息,因此很难给出建议。
【讨论】:
interface.h 等一堆文件的全局项目级 cmake 解决方案,因此在 所有 文件中它知道在哪里查找这些特定文件
include_directories())中,或在#include 语句本身中声明路径。在所有子目录中自动搜索给定的文件名不是要走的路。无论如何,投票结束时“不清楚你在问什么”。