Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更改cmake中get_filename_组件的引用路径?_Cmake - Fatal编程技术网

如何更改cmake中get_filename_组件的引用路径?

如何更改cmake中get_filename_组件的引用路径?,cmake,Cmake,我在cmake中使用get\u filename\u component来获取变量中给定的可能相对路径的绝对路径 我想做一个树外/源代码外构建 在我看来,get\u filename\u component正在使用CMAKE\u SOURCE\u DIR作为参考路径 有没有办法改变这一点或解决这一问题 我尝试过的一种方法是在我的潜在相对路径前面加上${CMAKE_BINARY_DIR},但给定的路径不是相对的,因此停止工作。假设您的相对路径总是相对于CMAKE_BINARY_DIR,那么您可以使

我在cmake中使用
get\u filename\u component
来获取变量中给定的可能相对路径的绝对路径

我想做一个树外/源代码外构建

在我看来,
get\u filename\u component
正在使用
CMAKE\u SOURCE\u DIR
作为参考路径

有没有办法改变这一点或解决这一问题


我尝试过的一种方法是在我的潜在相对路径前面加上
${CMAKE_BINARY_DIR}
,但给定的路径不是相对的,因此停止工作。

假设您的相对路径总是相对于
CMAKE_BINARY_DIR
,那么您可以使用以下方法轻松处理此问题:

如果在CMake运行时存在主题文件或目录,则您可以始终进行调用,传递可能的
名称
路径
。如果文件存在并被找到,结果变量将保留文件的完整路径

或者您可以使用
if
if(EXISTS…
签名来检查给定文件是否存在

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