107 votes

Comment changer le type de build en mode Release dans CMake ?

Je suis en train de construire un projet en mode Release. Par défaut, il est construit en mode debug. Je définis la variable CMAKE_BUILD_TYPE sur "Release" dans CMakeLists.txt. Mais le projet est toujours construit en mode debug. Quand je passe "Release" comme type de build dans la commande CMake, cela ne fonctionne toujours pas.

La commande CMake que j'utilise est :

cmake -G"Visual Studio 10" -DCMAKE_BUILD_TYPE=Release
  -H"chemin_source" -B"Chemin_de_construction"

Veuillez fournir une solution si possible.

2voto

Ashish Shirodkar Points 171

Si vous voulez générer un fichier de solution avec le type de build par défaut=Release, utilisez -DCMAKE_CONFIGURATION_TYPES=Release juste après l'option -B.

Exemple:

cmake -H. -G"Visual Studio 17 2022" -B -DCMAKE_CONFIGURATION_TYPES=Release

Si vous avez généré des fichiers de solution avec le type de build par défaut=Debug et que vous voulez le construire en utilisant cmake --build, utilisez --config Release juste après l'option --build

Exemple:

cmake --build  --config Release

Cela a fonctionné pour moi avec la version 3.26.3 de cmake

1voto

aalpatya Points 19

Un peu tard, mais j'ai trouvé que cela fonctionnait pour moi et c'était assez propre : Cela signifie que juste en appelant cmake cela construit en mode release, mais si vous voulez le mode debug il suffit d'appeler cmake -DCMAKE_BUILD_TYPE=Debug

if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choisissez Release ou Debug" FORCE)
endif()

-22voto

ixSci Points 2502

Utilisez-le comme vous le faites habituellement, mais dans le fichier CMake racine, ajoutez ce qui suit avant le mot-clé project

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X