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?
Apakah CMake selalu menghasilkan konfigurasi untuk semua kemungkinan konfigurasi proyek?
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