2016-06-29 57 views
1

我对调试和发布选项有特定的配置(不同于MSVC和GCC)。假设我们通过cmake ..生成默认项目。 CMake是否总是为所有可能的项目配置(Debug和Release)生成配置,或者总是只获得一组配置选项?CMake是否始终为所有可能的项目配置生成配置?

+0

我认为这取决于你的发电机。它当然可以做视觉工作室的所有配置。我不太确定其他发电机。 – cplusplusrat

回答

3

作为@cplusplusrat已评论的,这取决于发电机/编译环境:

  • 对于多配置环境,如MSVC或XCode中,是的。
  • 对于像GCC这样的单一配置环境,

而对于单配置环境的缺省既不Debug也不Release(见herehere)。

所以我一直为单配置环境定义一个CMAKE_BUILD_TYPE作为默认值。你也可以这样做,例如在构建脚本调用的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 
相关问题