使用cmake进行库版本控制

时间:2013-04-15 16:56:11

标签: cmake

我有一个包含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,但我认为这不是我需要的。

1 个答案:

答案 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)