【问题标题】:How do I specify relative paths in CMAKE?如何在 CMAKE 中指定相对路径?
【发布时间】:2014-11-06 19:16:29
【问题描述】:

我想在 CMake 中指定一个相对于当前目录的路径,但无法找到解决方案。

我的项目位于如下路径:

C:/Projects/ProjectA/CMakeLists.txt

我想使用 set() 命令指定以下目录的相对路径的名称

C:/External/Library

也就是说,那个CMake的翻译是什么

../../External/Library?

谢谢,

【问题讨论】:

    标签: cmake


    【解决方案1】:

    几乎完全相同,只是您允许 CMake 在另一个位置运行以进行“树外”构建。您可以通过指定相对于${CMAKE_CURRENT_SOURCE_DIR} 的路径来执行此操作,该路径是包含当前 CMakeLists.txt 文件的目录。

    ${CMAKE_CURRENT_SOURCE_DIR}/../../External/Library
    

    但是,您可能需要重新考虑,而是使用 FIND_LIBRARY 和 FIND_FILE 命令来搜索一组预定义的位置,这样您图书馆的用户就不必保持相同的相对结构。

    【讨论】:

    • 我应该指定我试图指向一个 VTK 安装目录。如果我运行 CMake,它会在我的系统上找到 VTK 构建目录,但是我已将安装目录放在我们的源代码控制系统上,并希望特别指出这一点。使用 SET(VTK_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../External/VTK) 不会做我想做的事。谢谢
    • 它在什么方面没有做你想做的事?
    • 对不起 - 当我运行 CMake(现在是 GUI)时,我希望 VTK_DIR 自动填充我的自定义外部路径,而不是它从我的正常系统构建中自动找到的路径。我可以手动设置它,一切都很好 - 但我希望它自动填充,以便我可以作为构建脚本的一部分自动运行 CMake
    • 在调用 FindVTK 之前,请像这样设置缓存变量 VTK_DIR:SET(VTK_DIR "${CMAKE_CURRENT_SOURCE_DIR}" CACHE PATH "VTK dir" FORCE)
    • 谢谢!它运作良好。既然答案是 5 年前的,那你不知道它是否是最新 cmake 的最佳答案吗?
    猜你喜欢
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    相关资源
    最近更新 更多