Ich habe spezielle Konfiguration für Debug und Release-Optionen (unterschiedlich für MSVC und für GCC). Angenommen, wir erzeugen ein Standardprojekt über cmake ..
. Erzeugt CMake immer Konfigurationen für alle möglichen Projektkonfigurationen (Debug und Release) oder bekommt man immer nur einen Satz Konfigurationsoptionen?Generiert CMake immer Konfigurationen für alle möglichen Projektkonfigurationen?
1
A
Antwort
3
Wie @cplusplusrat kommentiert hat, dies auf dem Generator hängt/Build-Umgebung:
- Für Multi-Konfigurations-Umgebungen wie MSVC oder XCode, ja.
- Für Umgebungen mit einer Konfiguration wie GCC, nein.
Und der Standard für Single-Konfiguration Umgebungen ist weder Debug
noch Release
(siehe here oder here).
So habe ich immer eine CMAKE_BUILD_TYPE
für Single-Konfiguration-Umgebungen als Standard definiert. Sie könnten dies auch z.B. in Build-Skripte aufrufen 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
Ich denke, es auf Ihrem Generator abhängt. Es macht sicherlich alle Konfigurationen für Visual Studio. Ich bin mir bei den anderen Generatoren nicht so sicher. – cplusplusrat