如何在没有调试符号和优化的情况下创建 cmake 构建配置?
How to create cmake build configuration without debug symbols and without optimizations?
我认为默认配置类型可以这样描述:
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
那么,如何创建呢?
关于table
gcc/clang 编译器(CMake 3.4.1
)方面的配置:
- 调试:
-g
- 发布:
-O3 -DNDEBUG
- RelWithDebInfo:
-O2 -g -DNDEBUG
- MinSizeRel:
-Os -DNDEBUG
意思是:
+---------------+--------------+--------------+----------+
| | optimization | assert works | stripped |
+---------------+--------------+--------------+----------|
| Debug | no | yes | no |
| Release | full | no | yes |
| RelWithDebInfo| good | no | no |
| MinSizeRel | size | no | yes |
+---------------+--------------+--------------+----------+
所以我不同意你的 MinSizeRel
描述,因为在这种情况下我认为 MinSizeRel
和 Release
都被剥离了。
关于问题
据我了解,您根本不需要额外的标志(没有 -g
、-O*
或 -DNDEBUG
)。对于 Makefile
类生成器:
> cmake -H. -B_builds -DCMAKE_BUILD_TYPE=MyConf -DCMAKE_CXX_FLAGS_MYCONF=""
> cmake --build _builds
对于像 Visual Studio 这样的生成器,您需要使用 CMAKE_CONFIGURATION_TYPES
(参见 this 答案):
> 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
我认为默认配置类型可以这样描述:
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
那么,如何创建呢?
关于table
gcc/clang 编译器(CMake 3.4.1
)方面的配置:
- 调试:
-g
- 发布:
-O3 -DNDEBUG
- RelWithDebInfo:
-O2 -g -DNDEBUG
- MinSizeRel:
-Os -DNDEBUG
意思是:
+---------------+--------------+--------------+----------+ | | optimization | assert works | stripped | +---------------+--------------+--------------+----------| | Debug | no | yes | no | | Release | full | no | yes | | RelWithDebInfo| good | no | no | | MinSizeRel | size | no | yes | +---------------+--------------+--------------+----------+
所以我不同意你的 MinSizeRel
描述,因为在这种情况下我认为 MinSizeRel
和 Release
都被剥离了。
关于问题
据我了解,您根本不需要额外的标志(没有 -g
、-O*
或 -DNDEBUG
)。对于 Makefile
类生成器:
> cmake -H. -B_builds -DCMAKE_BUILD_TYPE=MyConf -DCMAKE_CXX_FLAGS_MYCONF=""
> cmake --build _builds
对于像 Visual Studio 这样的生成器,您需要使用 CMAKE_CONFIGURATION_TYPES
(参见 this 答案):
> 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