Outils pour utilisateurs

Outils du site


prog:cmake:vs

Configuration

Exécution de cmake

  • Toolset (-T)
Visual Studiotoolset
80 2005
90 2008
100 2010
110 2012
120 2013
140 2015
141 2017
142 2019
143 2022

Il est aussi possible de spécifier l'architecture du host (du compilateur) et sa version: v143,version=14.36.17.6,host=x64

CMAKE_GENERATOR_TOOLSET Archive du 3.31.2 le 10/12/2024

  • Architecture (-A)

Liste des possibilités: x64, Win32, ARM, ARM64.

  • Générateur (-G)
Générateur
Visual Studio 6
Visual Studio 7
Visual Studio 7 .NET 2003
Visual Studio 8 2005
Visual Studio 9 2008
Visual Studio 10 2010
Visual Studio 11 2012
Visual Studio 12 2013
Visual Studio 14 2015
Visual Studio 15 2017
Visual Studio 16 2019
Visual Studio 17 2022

Puis appeler

cmake -T v142 -G "Visual Studio 16 2019" -A x64

Il faut bien mettre les trois. Sinon, l'erreur suivante risque d'arriver :

$ cmake .. -T version=v142
-- Building for: Visual Studio 17 2022

MSVC_TOOLSET_VERSION Archive du 20/09/2019

cmake-generators Archive du v3.31.2 le 10/12/2024

CMakeLists.txt

  • Activer la compilation multiprocesseur /MP

Cela active la compilation en parallèle des fichiers sources. Pas la compilation en parallèle des projets.

add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP>)

How to configure cmake in a way that it generates Visual Studio 2013+ project files with /MP option Archive du 22/11/2015 le 29/11/2019

  • target_include_directories

L'utilisation de l'option SYSTEM permet de désactiver les warnings venant des include “système”. Seulement, Visual Studio ne fera pas non plus d'indexation des entêtes *.h / *.hpp dans ces sous-dossiers.

Théorie à confirmer

Exécution

  • Exécution en parallèle des projets

L'activation de la compilation en parallèle des projets désactive la compilation en parallèle des fichiers source.

cmake --build: --parallel when used with msbuild does not enable parallelism within a project Archive du 09/04/2020 le 22/08/2022

Pour activer la compilation en parallèle des fichiers source en ligne de commande, il est possible d'utiliser (pour Visual Studio seulement) :

cmake --build . --  /p:CL_MPcount=8

Messages d'erreur

  • RuntimeLibrary, MTd_StaticDebug et MDd_DynamicDebug

Normalement, si les fichiers CMakeLists.txt sont bien fait, le générateur de projet Visual Studio de CMake devrait correctement mettre les bonnes valeurs par défaut.

error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MTd_StaticDebug' ne correspond pas à la valeur 'MDd_DynamicDebug' in xxx.obj
error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in xxx.obj

C'est que les deux fichiers objets non pas été compilé avec le même paramètre /M (/MD, /MT, /MDd, /MTd).

Solution : ajouter CMAKE_MSVC_RUNTIME_LIBRARY (et ajuster) au CMakeLists.txt racine (cmake minimum 3.15):

set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")

Setting the MSVC runtime in CMake Archive du 11/04/2012 le 10/04/2021

  • __acrt_first_block == header

Ici, c'est l'inverse du paragraphe précédent. Il faut désactiver la ligne CMAKE_MSVC_RUNTIME_LIBRARY.

Bref… Il faut faire bien attention à ce que toutes les librairies soient compilées avec les mêmes options.

Debug Assertion Failed! Expression: __acrt_first_block == header Archive du 10/02/2016 le 10/04/2021

prog/cmake/vs.txt · Dernière modification : 2024/12/10 22:25 de root