2016-06-29 32 views
1

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?

+0

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

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