【问题标题】:CMake relative include paths in C++CMake 相对包含 C++ 中的路径
【发布时间】:2014-06-03 08:52:22
【问题描述】:

在我使用的库中存在一个问题:所有路径都是相对的。 我的意思是,来自path1/path2/file.h 的文件有#include "interface.h",它(接口)位于anotherpath/anotherpath2/interface.h

有什么方法可以强制链接器在不同目录中查找包含?

【问题讨论】:

    标签: gcc cmake


    【解决方案1】:

    链接器不关心头文件。这是您正在查看的编译器。 (要真的吹毛求疵,它是预处理器。;-))

    CMake 有 include_directories() 命令:

    include_directories( "anotherpath/anotherpath2" )
    

    ./CMakeLists.txt 中,这将使#include "interface.h" 成为可能。

    但这真的是你想要的吗?通常,目录用于分隔模块#include "anotherpath/anotherpath2/interface.h" 将发送更加更清晰的信息,说明此处实际包含的内容,以及人类可以在哪里找到该头文件以查找其声明。也许重构您的包含语句会比在 CMake 配置中添加大量包含目录更好...

    一般来说,您的问题非常提供了很少的背景信息,因此很难给出建议。

    【讨论】:

    • 谢谢,听起来不错。我可以以某种方式实现它,所以我不接触库资源吗?
    • 我的意思是我需要针对interface.h 等一堆文件的全局项目级 cmake 解决方案,因此在 所有 文件中它知道在哪里查找这些特定文件
    • @IllyaKovalevskyy:我真的不知道你在说什么。源是你自己的项目,是吗?然后您必须在 CMake 配置(使用include_directories())中,#include 语句本身中声明路径。在所有子目录中自动搜索给定的文件名不是要走的路。无论如何,投票结束时“不清楚你在问什么”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多