2

我是一些使用 CMake 构建的库的作者。

如果用户指定他们运行 cmake 的构建类型 - 我可以强制执行,没问题。

但是当用户没有指定构建类型时,最佳实践是什么?

  • 我应该忽略它吗?
  • 我应该自己选择一种构建类型作为后备/默认值吗?如果是这样,是哪个?
  • 我已经阅读了这个Kitware 博客条目,它提出了一种解决问题的方法并将其置于库依赖项中。该方法被封装到这个模块中。我应该用那个吗?

到目前为止,我一直在强制执行一些特定的构建类型,并且有人建议我也许我不应该这样做。

4

1 回答 1

0

我认为有两个不错的选择:

  1. 如果CMAKE_BUILD_TYPE设置且活动生成器是单一配置,则警告用户。
  2. 没做什么。无论如何,该警告仅对新手用户有帮助。高级用户可能(但不太可能)打算这样做。在这种情况下,警告很烦人。

为了正确实现 (1),下面的代码片段(放在前面,最好放在后面project())将起作用:

cmake_minimum_required(VERSION 3.9)

# ...

get_property(is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if (NOT is_multi_config AND NOT DEFINED CMAKE_BUILD_TYPE)
  message(WARNING "Must set CMAKE_BUILD_TYPE for single-config generators.")
endif ()
于 2021-07-01T07:07:54.833 回答