cmake_minimum_required 和子项目

mal*_*lat 5 cmake

我真的很喜欢拥有我的顶级项目,推动我的子项目的编译。我目前有一棵树,例如:

gdcm -- cmake_minimum_required(VERSION 3.8.2 FATAL_ERROR)
??? Utilities
?   ??? gdcmcharls -- cmake_minimum_required(VERSION 2.8.7)
Run Code Online (Sandbox Code Playgroud)

我想让它尽可能接近我有一个方便的副本的每个不同的上游项目。但是,当我想测试 CMake 的新功能时,我不能简单地更改顶级 CMakeList.txt 文件并希望将新策略传输到单个子项目(根据嵌套命令的定义cmake_minimum_required)。

有没有成语可以这样说:

if(TOPLEVEL PROJECT)
cmake_minimum_required(VERSION 2.8.7)
else()
cmake_minimum_required(VERSION ${INHERITED_VERSION})
endif()
Run Code Online (Sandbox Code Playgroud)

Dan*_*lli 6

像这样的东西应该有效:

if(NOT DEFINED CMAKE_MINIMUM_REQUIRED_VERSION)
  cmake_minimum_required(VERSION 2.8.7)
endif()
Run Code Online (Sandbox Code Playgroud)

如果它已经定义,我不会调用cmake_minimum_required,因为这将覆盖您在主项目中手动设置的策略。