You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过命令行向CMake传递相对路径?解决路径识别问题

CMake脚本相对路径失效的解决办法

问题场景

我有个执行CMake的.cmd脚本,原本硬编码绝对路径能正常运行:

cmake ... -DCMAKE_PROJECT_INCLUDE=C:\random\my_cmake_project\project_hook.cmake

但这个.cmd和project_hook.cmake都在C:\random\my_cmake_project\目录下,想改成相对路径避免硬编码,试了下面的写法却报错找不到文件:

cmake ... -DCMAKE_PROJECT_INCLUDE=".\project_hook.cmake"

问题原因

CMake处理CMAKE_PROJECT_INCLUDE的相对路径时,是以执行cmake命令的工作目录为基准,而不是.cmd脚本所在的目录。哪怕.cmd和目标文件在同目录,只要执行.cmd时的工作目录不是这个目录,相对路径就会失效。

解决方法

用CMD内置的%~dp0变量,它会自动展开为当前.cmd脚本所在的绝对路径(自带末尾反斜杠),把脚本改成这样:

cmake ... -DCMAKE_PROJECT_INCLUDE="%~dp0project_hook.cmake"

这样不管你在哪个目录下运行这个.cmd,都能精准定位到同目录下的project_hook.cmake。


内容的提问来源于stack exchange,提问作者memelord23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:02:45