我正在尝试在发布模式下构建一个项目。默认情况下,它是在调试模式下构建的。我在 CMakeLists.txt
中将变量 CMAKE_BUILD_TYPE
设置为“Release”。但它仍在调试模式下构建项目。当我在 CMake 命令中将“发布”作为构建类型传递时,它仍然不起作用。
我正在使用的 CMake 命令是:
cmake -G"Visual Studio 10" -DCMAKE_BUILD_TYPE=Release
-H"source_path" -B"Build path"
如果有请提供解决方案。
cmake -DCMAKE_BUILD_TYPE=Release -H"soruce_path" -B"Buidl path" -G"Visual Studio 10"
要更改构建类型,在 Windows 上,必须在构建时完成:
cmake --build {DIR} --config Release
默认情况下它是调试。我仍在寻找更改此默认值的方法。 CMAKE_BUILD_TYPE 当然不起作用,调整 CMAKE_CONFIGURATION_TYPES 也不起作用,显然出于同样的原因,它们仅适用于 Unix makefile,不适用于 Visual 项目。
我用 Visual Studio 2015 和 cmake 3.3 检查了它。
简短的回答
cmake --build {BUILD_DIR_PATH} --target ALL_BUILD --config {BUILD_TYPE}
例子
cmake --build . --target ALL_BUILD --config Release
长答案
cmake -G{GENERATOR_NAME} -B{BUILD_DIR_PATH} -H{SOURCE_DIR_PATH}
cmake --build {BUILD_DIR_PATH} --target ALL_BUILD --config {BUILD_TYPE}
例子
cmake -GVisual Studio 14 -Bbuild/win32/x86 -H.
cmake --build build/win32/x86 --target ALL_BUILD --config Release
附加信息
“-G” - 指定生成器名称
“-B” - 指定构建文件夹的路径
“-H” - 指定源文件夹的路径
ALL_BUILD
影响依赖于项目的所有目标。我宁愿不碰它。如果您正在处理您的项目但想在发布模式下构建其依赖项怎么办?这是一个完美的发现和常见的例子。
您无法从命令行设置 Visual Studio 的默认构建类型。
CMake 的 Visual Studio 生成器将生成四个标准配置文件(Debug、RelWithDebInfo、MinSizeRel 和 Release),您必须在 VS 中选择要构建的配置文件。这是因为有关活动配置的信息不是 CMake 生成的项目文件的一部分,而是 VS 生成的 .suo
文件的一部分。
如果您想要自动构建特定配置,请使用 MSBuild 而不是 VS,它允许您在命令行上指定配置。
尝试了以下对我有用的东西,以在 Windows 中以发布/调试模式构建二进制文件。
在根 CMakeLists.txt
文件中添加了以下行,就在项目命令的上方:
SET(CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE} CACHE STRING "" FORCE)
使用以下命令设置发布模式配置:
cmake -DCMAKE_BUILD_TYPE=Release ..
使用此命令在发布模式下构建相同的:
cmake --build . --config Release
您也可以对调试模式重复相同的过程,它可以工作。
有点晚了,但我发现这对我有用,而且很干净:这意味着只调用 cmake
以发布模式构建,但如果你想要调试模式,只需调用 cmake -DCMAKE_BUILD_TYPE=Debug
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose Release or Debug" FORCE)
endif()
照常使用它,但在根 cmake 文件中,在项目关键字之前添加以下内容
SET(CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE} CACHE STRING "" FORCE)
PROJECT(MY_PROJECT)#It's here just to show where you should add it.
cmake . -DCMAKE_BUILD_TYPE=Release
要容易得多。两者都不难,但我每次都会选择更简单的方法。
CMAKE_CONFIGURATION_TYPES doesn't work either
CMAKE_CONFIGURATION_TYPES 变量控件为当前项目构建配置(查看 Visual Studio 项目的solution configurations
)。请参阅上面的评论。cmake --build . --config Release --target install
。然后 cmake 工作它很神奇!cmake --install .
与 VS 生成器的工作方式不同。