0

我有一个包含 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。我无法根据 MA​​JOR、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 但是我如何更改代码以便即使不从顶层运行它也可以构建。我读到SET了 INHERITED,但我认为这不是我需要的。

4

1 回答 1

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)
于 2013-04-15T17:32:55.377 回答