Does CMake always generate configurations for all possible project configurations?

前端 未结 1 875
旧时难觅i
旧时难觅i 2020-12-12 05:27

I have specific configuration for debug and release options (diferent for MSVC and for GCC). Say we generate default project via cmake ... Does CMake always gen

相关标签:
1条回答
  • 2020-12-12 06:12

    As @cplusplusrat has commented, this depends on the generator/build environment:

    • For multi-configuration environments like MSVC or XCode, yes.
    • For single-configuration environments like GCC, no.

    And the default for single-configuration environments is neither Debug nor Release (see here or here).

    So I have always defined one CMAKE_BUILD_TYPE for single-configuration environments as a default. You could also do this e.g. in build scripts calling 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 
    
    0 讨论(0)
提交回复
热议问题