如何在CMAKE中指定相对路径?

如何在CMAKE中指定相对路径?,cmake,Cmake,我想指定一个路径,该路径相对于CMake中的当前目录,但尚未找到解决方案 我的项目位于以下路径: C:/Projects/ProjectA/CMakeLists.txt 我想使用set()命令指定以下目录的相对路径的名称 换句话说,CMake翻译的是什么 ../../External/Library? 谢谢,除了允许CMake在另一个位置运行“树外”构建之外,几乎完全相同。您可以通过指定相对于${CMAKE\u CURRENT\u SOURCE\u DIR}的路径来执行此操作,该路径是包含当

我想指定一个路径,该路径相对于CMake中的当前目录,但尚未找到解决方案

我的项目位于以下路径:

C:/Projects/ProjectA/CMakeLists.txt
我想使用set()命令指定以下目录的相对路径的名称

换句话说,CMake翻译的是什么

../../External/Library?

谢谢,

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

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

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

我应该指定尝试指向VTK安装目录。如果我运行CMake,它会在我的系统上找到VTK build目录,但是我已经将安装目录放在了我们的源代码管理系统上,我想特别指出这一点。使用SET(VTK_DIR${CMAKE_CURRENT_SOURCE_DIR}/./../External/VTK)并不能完成我希望它完成的任务。感谢您,它以什么方式不做您希望它做的事情?抱歉-当我运行CMake(现在的GUI)时,我希望VTK_目录自动填充我的自定义外部路径,而不是它从我的正常系统构建中自动找到的路径。我可以手动设置它,一切都很好-但我希望它能够自动填充,这样我就可以作为构建脚本的一部分自动运行CMake。在调用FindVTK之前,请如下设置缓存变量VTK_DIR:
set(VTK_DIR“${CMake_CURRENT_SOURCE_DIR}”缓存路径“VTK DIR”FORCE)
谢谢!它工作得很好。因为答案是5年前的,你知道这是否是最新的cmake的最佳答案吗?
${CMAKE_CURRENT_SOURCE_DIR}/../../External/Library