首页 > 解决方案 > 如果 include_directories 中的路径之一不存在,为什么 CMakeLists 不抛出警告/错误(在编译期间)?

问题描述

在我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().

标签: c++visual-studiocmake

解决方案


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)

现场演示


推荐阅读