CMake是否总是为所有可能的项目配置生成配置?
Does CMake always generate configurations for all possible project configurations?
我有调试和发布选项的特定配置(MSVC和GCC不同)。假设我们通过cmake ..
生成默认项目。CMake总是为所有可能的项目配置(调试和发布)生成配置,还是总是只得到一组配置选项?
正如@cplusplusrat所评论的,这取决于生成器/构建环境:
- 对于像MSVC或XCode这样的多配置环境,可以。
- 对于像GCC这样的单配置环境,no.
单配置环境的默认值既不是Debug
也不是Release
(参见这里或这里)。
所以我总是为单配置环境定义一个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
相关文章:
- 如何将我的 CMake 项目配置为运行所有单元测试?
- 配置和安装项目所需的包
- 多项目配置C++
- 配置过程项目文件中的错误可能无效
- KDevelop无法配置项目
- 如何配置 Clion 来编译 gtkmm 项目
- 项目开发期间的内部构建配置 - 良好实践
- 在Visual Studio Code(.json配置)中设置相对于工作区路径的c / c ++项目的包含路径
- 如何在不创建新配置的情况下对两个不同解决方案使用的一个项目使用不同的 #defines
- 如何配置 CMake 以特定顺序构建多个项目?
- 如何在 TravisCI 中为 C++ w/ CMake 项目正确配置 CodeCov?
- 在远程项目上配置"Eclipse IDE for C/C++ Developers"
- 如何在 CLion 中配置项目的生成方式
- 在QtCreator中配置c ++项目时出现问题
- 为什么应该在每个项目包配置之后包含(CPack)?
- 如何使用Meson正确配置Visual Studio项目
- C/C++:是否可以将 Eclipse 项目设置配置为接受 void 指针而不对所有 Linux 发行版进行强制转换
- 如何使用CMAKE中的组件配置项目
- CMake 配置项目
- Visual Studio发布配置c++项目没有命令窗口