我有一个包含4个不同子项目的项目。要指定版本,我使用
SET(parent_VERSION_MAJOR 1)
SET(parent_VERSION_MINOR 0)
set(parent_VERSION_PATCH 0)
set(parent_VERSION 1.0.0)
然后如果使用add_subdirectory,我可以在子项目中使用它。
Q1。我无法根据MAJOR,MINOR和PATCH设置parent_VERSION。根据文档应该自动设置,但每当我尝试打印它时,它是空的而不使用代码中的最后一行。
Q2。如果我只想从子目录构建,我会收到错误提示:
CMake Error at CMakeLists.txt:28 (set_target_properties):
set_target_properties called with incorrect number of arguments.
这是因为我在那里使用parent_VERSION。
所以我理解,如果没有从顶层目录运行cmake,它就无法获取parent_VERSION但是如何更改代码,使得即使不从顶层运行也可以构建它。
我用INHERITED读到了SET
,但我认为这不是我需要的。
答案 0 :(得分:1)
以下是我如何解决它。如果有人能告诉我一个更好/更优雅的方式,我会很高兴。
if(NOT parent_VERSION)
SET(parent_VERSION_MAJOR 1)
SET(parent_VERSION_MINOR 0)
SET(parent_VERSION_PATCH 0)
SET(parent_VERSION 1.0.0)
endif(NOT parent_VERSION)