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

如何在CMake函数中使用CMAKE_CURRENT_LIST_DIR获取自身目录文件路径?

解决CMake函数中获取定义目录下文件路径的问题

这其实是CMake变量作用域的典型场景,直接用CMAKE_CURRENT_LIST_DIR就能完美解决你的问题,具体做法如下:

在你的do_something_interesting函数里,把file_i_need.in的路径拼接成${CMAKE_CURRENT_LIST_DIR}/file_i_need.in就行——因为**CMAKE_CURRENT_LIST_DIR在函数内部的作用域是固定指向函数定义所在的CMakeLists.txt目录**,也就是你这里的path/to/a/,完全匹配你要找同目录下file_i_need.in的需求。

修改后的函数代码:

function(do_something_interesting ...)
    configure_file(
        "${CMAKE_CURRENT_LIST_DIR}/file_i_need.in"
        file_out
    )
endfunction()

额外说明:

  • 用双引号包裹路径是CMake的最佳实践,能避免路径中包含空格时出现解析错误;
  • 输出文件file_out不指定路径的话,默认会生成在调用该函数的CMakeLists对应的二进制构建目录下,也就是CMAKE_CURRENT_BINARY_DIR指向的位置,完全符合你的要求;
  • 别混淆CMAKE_CURRENT_LIST_DIR和CMAKE_CURRENT_SOURCE_DIR:后者会随着函数被调用的位置变化而改变,指向当前正在处理的CMakeLists目录,而前者始终绑定函数定义的位置,这正是你需要的特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:16:05