在我的CMakeLists.txt中,include_directories()下有很多路径。当遇到不存在的路径时,我希望看到错误或警告。这样我就可以清理我的CMakeLists.txt。我要清理多个CMakeLists.txt。我的include_directories看起来像这样:

include_directories(
  "inc"
  "../../../../../../a/b/c/d/e/f/inc"
  "../../../../../../a/b/c/d/l/p/inc"
  "../../../../../../a/b/c/d/l/o/inc"
  .
  .
  .
  .
  .
  .
  .
  .

 )


路径“ inc”在CMakeLists.txt的当前分支中不存在,但不会引发错误。

我认为CMakeLists.txt忽略include_directories()中的空字符串。

最佳答案

CMake传递包含了构建系统更进一步的目录,并不关心它们的存在。

但是,您可以自己编写一些代码。函数include_directories将列表放入变量INCLUDE_DIRECTORIES中,您可以对其进行迭代:

get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
FOREACH(dir ${dirs})
  IF(NOT EXISTS ${dir})
     message(SEND_ERROR "directory '" ${dir} "' does not exist.")
  ENDIF(NOT EXISTS ${dir})
ENDFOREACH(dir)


Live demo

关于c++ - 如果include_directories中的路径之一不存在,为什么CMakeLists在编译过程中不引发警告/错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58214882/

10-11 22:13