如何在cmake中更改get_filename_component的引用路径?

时间:2013-04-10 14:33:05

标签: cmake

我在cmake中使用get_filename_component来获取变量中给出的可能相对路径的绝对路径。

我想做一个树外/源外构建。

在我看来get_filename_component正在使用CMAKE_SOURCE_DIR作为参考路径。

有没有办法改变它或解决它?

我尝试的一种方法是使用${CMAKE_BINARY_DIR}为我的潜在相对路径添加前缀,但停止给定路径的工作不是相对的。

1 个答案:

答案 0 :(得分:2)

假设您的相对路径始终相对于CMAKE_BINARY_DIR,那么您可以使用if(IS_ABSOLUTE ...)轻松处理此问题:

if(NOT IS_ABSOLUTE ${MyPath})
  set(MyAbsPath ${CMAKE_BINARY_DIR}/${MyPath})
endif()

如果在CMake运行时存在主题文件或目录,则您始终可以进行find_file来电,并传递可能的NAMESPATHS。如果文件存在且找不到,则生成的变量将保存文件的完整路径。

或者您可以使用if(EXISTS ...)的{​​{1}}签名来检查给定文件是否存在。