Как создать конфигурацию сборки cmake без символов отладки и без оптимизации?

Я думаю, что типы конфигурации по умолчанию можно описать следующим образом:

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
  • 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 лишены.

О вопросе

Насколько я понимаю, вы не хотите никаких дополнительных флагов вообще (no -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