what tutorial script course c++ configuration cmake projects-and-solutions

c++ - course - cmake script tutorial



¿CMake siempre genera configuraciones para todas las posibles configuraciones de proyectos? (1)

Como ha comentado @cplusplusrat, esto depende del entorno generador / compilación:

  • Para entornos de configuración múltiple como MSVC o XCode, sí.
  • Para entornos de configuración única como GCC, no.

Y el valor predeterminado para entornos de configuración única no es ni Debug ni Release (ver aquí o aquí ).

Por lo tanto, siempre he definido un CMAKE_BUILD_TYPE para entornos de configuración única como valor predeterminado. También podría hacer esto, por ejemplo, en los scripts de compilación que llaman a 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

Tengo una configuración específica para las opciones de depuración y liberación (diferente para MSVC y para GCC). Digamos que generamos un proyecto predeterminado a través de cmake .. ¿CMake siempre genera configuraciones para todas las posibles configuraciones de proyecto (Depuración y Liberación) o uno siempre obtiene solo un conjunto de opciones de configuración?