Apakah CMake selalu menghasilkan konfigurasi untuk semua kemungkinan konfigurasi proyek?

Saya memiliki konfigurasi khusus untuk opsi debug dan rilis (berbeda untuk MSVC dan GCC). Katakanlah kita membuat proyek default melalui cmake ... Apakah CMake selalu menghasilkan konfigurasi untuk semua kemungkinan konfigurasi proyek (Debug dan Rilis) atau CMake selalu hanya mendapatkan satu set opsi konfigurasi?


person DuckQueen    schedule 29.06.2016    source sumber
comment
Saya pikir itu tergantung pada generator Anda. Itu tentu saja melakukan semua konfigurasi untuk visual studio. Saya tidak begitu yakin tentang generator lainnya.   -  person cplusplusrat    schedule 29.06.2016


Jawaban (1)


Seperti yang dikomentari @cplusplusrat, ini tergantung pada lingkungan generator/build:

  • Untuk lingkungan multi-konfigurasi seperti MSVC atau XCode, ya.
  • Untuk lingkungan konfigurasi tunggal seperti GCC, tidak.

Dan default untuk lingkungan konfigurasi tunggal bukanlah Debug atau Release (lihat di sini atau di sini).

Jadi saya selalu mendefinisikan satu CMAKE_BUILD_TYPE untuk lingkungan konfigurasi tunggal sebagai bawaan. Anda juga bisa melakukan ini, mis. dalam skrip build yang memanggil 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