我是一些使用 CMake 构建的库的作者。
如果用户指定他们运行 cmake 的构建类型 - 我可以强制执行,没问题。
但是当用户没有指定构建类型时,最佳实践是什么?
- 我应该忽略它吗?
- 我应该自己选择一种构建类型作为后备/默认值吗?如果是这样,是哪个?
- 我已经阅读了这个Kitware 博客条目,它提出了一种解决问题的方法并将其置于库依赖项中。该方法被封装到这个模块中。我应该用那个吗?
到目前为止,我一直在强制执行一些特定的构建类型,并且有人建议我也许我不应该这样做。
我是一些使用 CMake 构建的库的作者。
如果用户指定他们运行 cmake 的构建类型 - 我可以强制执行,没问题。
但是当用户没有指定构建类型时,最佳实践是什么?
到目前为止,我一直在强制执行一些特定的构建类型,并且有人建议我也许我不应该这样做。
我认为有两个不错的选择:
CMAKE_BUILD_TYPE
未设置且活动生成器是单一配置,则警告用户。为了正确实现 (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 ()