У меня есть особая конфигурация для параметров отладки и выпуска (разные для MSVC и для GCC). Скажем, мы генерируем проект по умолчанию через cmake ..
. Всегда ли CMake создает конфигурации для всех возможных конфигураций проекта (отладка и выпуск) или всегда получает только один набор параметров конфигурации?
Всегда ли CMake создает конфигурации для всех возможных конфигураций проекта?
comment
Думаю, это зависит от вашего генератора. Он, безусловно, выполняет все конфигурации для Visual Studio. Насчет других генераторов я не уверен.
- person cplusplusrat   schedule 29.06.2016
Ответы (1)
Как прокомментировал @cplusplusrat, это зависит от среды генератора / сборки:
- Для сред с несколькими конфигурациями, таких как MSVC или XCode, да.
- Для сред с одной конфигурацией, таких как GCC, нет.
По умолчанию для сред с одной конфигурацией не используется ни Debug
, ни Release
(см. здесь или здесь).
Поэтому я всегда определял один CMAKE_BUILD_TYPE
для сред с одной конфигурацией как дефолт. Вы также можете сделать это, например, в сценариях сборки, вызывающих CMake:
mingw_build.cmd
@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
:: usage:
:: mingw_build.cmd <target> <config>
:: <target> - target to be built (default: all)
:: <config> - configuration to be used for build (default: Debug)
if NOT "%1" == "" (set CMAKE_TARGET=%1) else (set CMAKE_TARGET=all)
if NOT "%2" == "" (set CMAKE_BUILD_TYPE=%2) else (set CMAKE_BUILD_TYPE=Debug)
SET CMAKE_BINARY_DIR=%CMAKE_BUILD_TYPE%
IF NOT EXIST "%CMAKE_BINARY_DIR%\Makefile" (
cmake -H"." -B"%CMAKE_BINARY_DIR%" -DCMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% -G"MinGW Makefiles"
)
cmake --build %CMAKE_BINARY_DIR% --target %CMAKE_TARGET%
ENDLOCAL
vs_x64_build.cmd
@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
:: usage:
:: vs_x64_build.cmd <target> <config>
:: <target> - target to be built (default: ALL_BUILD)
:: <config> - configuration to be used for build (default: Debug)
if NOT "%1" == "" (SET CMAKE_TARGET=%1) else (SET CMAKE_TARGET=ALL_BUILD)
if NOT "%2" == "" (set CMAKE_BUILD_TYPE=%2) else (set CMAKE_BUILD_TYPE=Debug)
SET CMAKE_BINARY_DIR=x64
IF NOT EXIST "%CMAKE_BINARY_DIR%\*.sln" (
cmake -H"." -B"%CMAKE_BINARY_DIR%" -G"Visual Studio 14 2015 Win64"
)
cmake --build "%CMAKE_BINARY_DIR%" --target "%CMAKE_TARGET%" --config "%CMAKE_BUILD_TYPE%"
ENDLOCAL
person
Florian
schedule
29.06.2016