如何在CMAKE_MODULE_PATH中正确配置相对路径?
正确使用相对路径设置CMAKE_MODULE_PATH的方法
直接用../Util/etc/cmake/Modules这类相对路径失效的核心原因是:CMake解析相对路径时,默认以**执行cmake命令的工作目录(通常是build目录)**为基准,而非当前CMakeLists.txt所在的项目目录。一旦build目录和项目目录层级不同,路径就会指向错误位置。
解决方法是利用CMake内置变量CMAKE_CURRENT_LIST_DIR构造可靠路径:
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../Util/etc/cmake/Modules;${CMAKE_MODULE_PATH}")
关键说明
CMAKE_CURRENT_LIST_DIR是CMake内置变量,始终指向当前正在处理的CMakeLists.txt文件所在的绝对路径,不受build目录位置影响。- 用该变量拼接相对路径,本质是将相对路径转换为绝对路径,确保CMake能准确定位到模块目录。
验证方式
可以添加以下代码确认路径是否正确:
message(STATUS "当前CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}")
运行cmake时控制台会输出最终路径列表,检查目标目录是否已正确加入。
内容的提问来源于stack exchange,提问作者vel
相关产品推荐
相关产品推荐

