如何在没有调试符号和优化的情况下创建 cmake 构建配置

How to create cmake build configuration without debug symbols and without optimizations?

本文关键字:情况下 创建 cmake 配置 构建 优化 符号 调试      更新时间:2023-10-16

我认为默认配置类型可以这样描述:

Debug          : w/ debug symbols, w/o optimization
Release        : w/o debug symbols, w/ optimization
RelWithDebInfo : w/ debug symbols, w/ optimization
MinSizeRel     : w/o debug symbols, w/ optimization, stripped binaries

但我需要一个新的:

MyConf         : w/o debug symbols, w/o optimization

那么,如何创建它呢?

关于表

gcc/clang 编译器(CMake 3.4.1)方面的配置:

  • 调试:-g
  • 发行: -O3 -DNDEBUG
  • RelWithDebInfo: -O2 -g -DNDEBUG
  • 最小尺寸:-Os -DNDEBUG

这意味着:

  +---------------+--------------+--------------+----------+
  |               | optimization | assert works | stripped |
  +---------------+--------------+--------------+----------|
  |     Debug     |     no       |     yes      |    no    |
  |    Release    |    full      |      no      |   yes    |
  | RelWithDebInfo|    good      |      no      |    no    |
  |   MinSizeRel  |    size      |      no      |   yes    |
  +---------------+--------------+--------------+----------+

所以我不同意你MinSizeRel描述,因为在这种情况下,我认为MinSizeRelRelease都被剥夺了。

关于问题

据我了解,您根本不想要额外的标志(没有-g-O*-DNDEBUG)。对于类似Makefile的发电机:

> cmake -H. -B_builds -DCMAKE_BUILD_TYPE=MyConf -DCMAKE_CXX_FLAGS_MYCONF=""
> cmake --build _builds

对于像Visual Studio这样的生成器,你需要使用CMAKE_CONFIGURATION_TYPES(见这个答案):

> cmake -H. -B_builds -DCMAKE_CONFIGURATION_TYPES="Release;Debug;RelWithDebInfo;MinSizeRel;MyConf" -DCMAKE_CXX_FLAGS_MYCONF="/Od" -DCMAKE_EXE_LINKER_FLAGS_MYCONF=""
> cmake --build _builds --config MyConf