CMake:如何防止直接使用错误的子目录 CMakeLists?

CMake: How to prevent using wrong subdirectory CMakeLists directly?

例如,如果我有一个主要的 CMakeLists 构建 project 的所有依赖项,然后通过 add_subdirectory( project ) 构建项目本身。 但是如果你尝试通过 project/CMakeLists 构建你会失败(因为缺少依赖项)。那么防止这种情况的最佳方法是什么,例如检查给定的 CMakeLists 是否被另一个包含,或者它是否是 "root".

在需要这个的子目录下的CMakeLists.txt文件中,添加:

if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
  message(FATAL_ERROR "Blah blah wrong directory")
endif()