我在cmake中使用get_filename_component
来获取变量中给出的可能相对路径的绝对路径。
我想做一个树外/源外构建。
在我看来get_filename_component
正在使用CMAKE_SOURCE_DIR
作为参考路径。
有没有办法改变它或解决它?
我尝试的一种方法是使用${CMAKE_BINARY_DIR}
为我的潜在相对路径添加前缀,但停止给定路径的工作不是相对的。
答案 0 :(得分:2)
假设您的相对路径始终相对于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 ...)
的{{1}}签名来检查给定文件是否存在。