我get_filename_component
在 cmake 中使用来获取变量中给定的可能相对路径的绝对路径。
我想做一个out-of-tree/out-of-source-build。
在我看来,它get_filename_component
被CMAKE_SOURCE_DIR
用作参考路径。
有没有办法改变它或解决它?
我尝试的一种方法是为我的潜在相对路径添加前缀,${CMAKE_BINARY_DIR}
但停止工作的路径不是相对的。
我get_filename_component
在 cmake 中使用来获取变量中给定的可能相对路径的绝对路径。
我想做一个out-of-tree/out-of-source-build。
在我看来,它get_filename_component
被CMAKE_SOURCE_DIR
用作参考路径。
有没有办法改变它或解决它?
我尝试的一种方法是为我的潜在相对路径添加前缀,${CMAKE_BINARY_DIR}
但停止工作的路径不是相对的。
假设你的相对路径总是相对于CMAKE_BINARY_DIR
,那么你可以很容易地使用if(IS_ABSOLUTE ...)
:
if(NOT IS_ABSOLUTE ${MyPath})
set(MyAbsPath ${CMAKE_BINARY_DIR}/${MyPath})
endif()
如果主题文件或目录在 CMake 运行时存在,那么您始终可以进行find_file
调用,传递可能的NAMES
和PATHS
. 如果文件存在并被找到,则生成的变量将保存文件的完整路径。
或者您可以使用 的if(EXISTS ...)
签名if
来检查给定文件是否存在。