【问题标题】:Cmake and resources pathCmake和资源路径
【发布时间】:2015-01-06 08:36:09
【问题描述】:

我有一个具有以下目录树结构的项目:

CMakeLists.txt
\src
   test.cpp
\include
   test.h
\resources
   various resource files

test.cpp 包含正确的路径(相对于根目录),以便指向资源目录中的资源。 当在 build 目录中使用源代码外构建运行 CMake 时,\build 目录被创建为根目录的子目录,但现在无法再访问以前在 test.cpp 中硬编码的正确路径指向的资源,因为工作目录不是根目录。

如何使用 CMake 和外源构建管理资源??

【问题讨论】:

    标签: path resources cmake


    【解决方案1】:

    由您作为程序作者来理解相对路径。对于相对路径,您必须始终清楚 什么 它是相对的。 “源文件目录”是一个糟糕的参考点,因为它在运行时不存在。

    是相对于当前(= 工作)目录的路径吗?那么这超出了 CMake 的控制范围,您必须正确启动程序。出于测试目的,您可以设置测试属性WORKING_DIRECTORY

    是相对于可执行位置的路径吗?如果是这样,您可以通过其RNTIME_OUTPUT_DIRECTORY 属性定位可执行文件,和/或使用file(COPY)configure_file(COPYONLY) 将资源复制到适当的位置。

    【讨论】:

    • 谢谢,但第一句话在我看来确实很明显!!! :D 所以它没有为你的答案增加价值......我在我的帖子中的意思(我虽然很清楚)是问题是由于源代码外的构建(这种模式似乎是唯一的一种有助于使用 CMake 明确区分源代码和可执行文件!)这使得运行目录不同并且至少低于 wrt 的级别根。所以这是CMake的一个特点......我没有遇到过蚂蚁或其他工具的这种问题。无论如何,我会尝试看看如何利用您建议的命令。 Tnx 很多!
    • @davide 我认为这里没有任何 CMake 特定的内容。所有程序通常都在源外运行,因为这就是程序的部署方式。即使使用开源程序,您也可以发布源代码以便修改程序,而不是运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    相关资源
    最近更新 更多