0

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

我想做一个out-of-tree/out-of-source-build。

在我看来,它get_filename_componentCMAKE_SOURCE_DIR用作参考路径。

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

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

4

1 回答 1

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 ...)签名if来检查给定文件是否存在。

于 2013-04-11T00:22:48.133 回答