如何在cmake中将构建类型更改为发布模式?

pb3s4cty  于 2022-11-11  发布在  其他
关注(0)|答案(7)|浏览(248)

我试图在发布模式下构建一个项目。默认情况下,它是在调试模式下构建的。我在CMakeLists.txt中将变量CMAKE_BUILD_TYPE设置为“Release”。但它仍然在调试模式下构建项目。当我在CMake命令中将“Release”作为构建类型传递时,它仍然不工作。
我使用的CMake命令是:

cmake -G"Visual Studio 10" -DCMAKE_BUILD_TYPE=Release
  -H"source_path" -B"Build path"

请提供解决方案(如有)。

zf9nrax1

zf9nrax11#

若要在Windows上更改生成类型,必须在生成时完成:

cmake --build {DIR} --config Release

默认情况下它是Debug。我仍然在寻找改变这个默认值的方法。CMAKE_BUILD_TYPE当然不起作用,并且调整CMAKE_CONFIGURATION_TYPES也不起作用,显然出于同样的原因,它们只适用于Unix makefile,不适用于Visual项目。

j2cgzkjk

j2cgzkjk2#

我用Visual Studio 2015和cmake 3.3检查了它。

  • 简短回答 *

Link

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”-指定源文件夹的路径
izj3ouym

izj3ouym3#

您无法从命令列设定Visual Studio的预设组建类型。
CMake的Visual Studio Generators将生成四个标准配置文件(Debug、RelWithDebInfo、MinSizeRel和Release),您必须选择要从VS中构建的配置文件。这是因为有关活动配置的信息不是CMake生成的项目文件的一部分,而是VS生成的.suo文件的一部分。
如果您想要自动建置特定组态,请使用MSBuild,而不要使用VS,因为VS可让您在命令列上指定组态。

gdx19jrr

gdx19jrr4#

我尝试了下面的方法,在Windows中以发布/调试模式构建二进制文件。
在根CMakeLists.txt文件中项目命令的正上方添加了以下行:

SET(CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE} CACHE STRING "" FORCE)

已使用以下命令设置释放模式配置:

cmake -DCMAKE_BUILD_TYPE=Release ..

使用此命令在发布模式下构建相同的内容:

cmake --build . --config Release

您也可以在调试模式下重复相同的过程,它可以正常工作。

uinbv5nw

uinbv5nw5#

有点晚了,但我发现这个对我很有效,而且很干净:这意味着只需调用cmake即可在发布模式下构建,但如果需要调试模式,只需调用cmake -DCMAKE_BUILD_TYPE=Debug即可

if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose Release or Debug" FORCE)
endif()
p3rjfoxz

p3rjfoxz6#

如果您的生成器是单配置生成器,如“Unix Makefiles”或“Ninja”,则构建类型由the CMAKE_BUILD_TYPE variable指定,可以使用-DCMAKE_BUILD_TYPE:STRING=Release在configure命令中设置。
对于多配置生成器(如Visual Studio生成器和“Ninja Multi-Config”),要生成的配置是在生成命令中使用--config参数(如--config Release)指定的。当前可以在配置Ninja Multi-Config生成器时通过设置the CMAKE_DEFAULT_BUILD_TYPE variable的值来指定默认值。如果没有将--config参数传递给生成命令,则将使用该参数。目前,无法为Visual Studio生成器设置默认值。

llmtgqce

llmtgqce7#

按照您的方式使用它,但在根cmake文件中,在 project 关键字**之前添加以下内容

SET(CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE} CACHE STRING "" FORCE)
PROJECT(MY_PROJECT)#It's here just to show where you should add it.

相关问题