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

kra*_*mes 16 cmake

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

我的项目在于:

C:/Projects/ProjectA/CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

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

C:/External/Library
Run Code Online (Sandbox Code Playgroud)

换句话说,什么是CMake翻译

../../External/Library?
Run Code Online (Sandbox Code Playgroud)

谢谢,

Pet*_*ter 22

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

${CMAKE_CURRENT_SOURCE_DIR}/../../External/Library
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢!效果很好。既然答案是5年前的,你是否知道这是否是最新cmake的最佳答案? (2认同)