cmake ${} 转绝对路径
时间: 2024-09-26 08:14:25 浏览: 28
在CMake中,`${}`通常用于引用变量,如果你想将一个相对路径转换为绝对路径,可以使用内置函数`get_filename_component()`或者`abspath()`。假设你想转换单个变量`my_path`的内容:
```cmake
set(my_path ..) # 假设这是一个相对路径
get_filename_component(abs_path ${my_path} ABSOLUTE)
message("Absolute path is: ${abs_path}")
```
`get_filename_component(abs_path ${my_path} ABSOLUTE)`会返回`my_path`的绝对版本,并将其赋值给`abs_path`。
如果你需要对整个命令行字符串进行替换,你可以先设置一个临时变量:
```cmake
string(COMPLETELY_SPECIFIED "${my_path}" is_absolute)
if(NOT is_absolute)
set(abs_path ${CMAKE_CURRENT_LIST_DIR}/${my_path})
string(FIND abs_path "/" has_slash ${CMAKE_MATCH_0})
if(has_slash GREATER -1)
set(abs_path "${abs_path}" REALPATH)
endif()
endif()
message("Final absolute path: ${abs_path}")
```
这里首先检查路径是否已经绝对,如果不是,则结合当前目录(`CMAKE_CURRENT_LIST_DIR`)来获取绝对路径。
阅读全文