L'une des frustrations du développement logiciel consiste à essayer de compiler du code qui nécessite une fonctionnalité non prise en charge par le compilateur installé. Par exemple, une application logicielle nécessitant C 11 peut ne pas se compiler correctement si l'utilisateur dispose d'un compilateur plus ancien qui ne prend en charge que C 98. Dans une telle situation, il serait utile que la compilation échoue pendant l'exécution de CMake plutôt qu'au moment de la compilation.
CMake version 3.1.0 et versions ultérieures permet de détecter les fonctionnalités C prises en charge par un compilateur C.
<code class="cmake">cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) project(foobar CXX) message("Your C++ compiler supports these C++ features:") foreach(i ${CMAKE_CXX_COMPILE_FEATURES}) message("${i}") endforeach()</code>
Dans la plupart des cas, vous n'aurez pas à spécifier les fonctionnalités C directement mais spécifiez à la place les fonctionnalités C requises et laissez CMake déduire la norme C. CMake s'assurera ensuite que le compilateur est invoqué avec les indicateurs corrects (par exemple, -std=c 11).
<code class="cmake"># Explicitly set C++ standard and required features add_executable(prog main.cc) set_property(TARGET prog PROPERTY CXX_STANDARD 11) set_property(TARGET prog PROPERTY CXX_STANDARD_REQUIRED ON)</code>
<code class="cmake"># Specify required C++ features and let CMake deduce the C++ standard target_compile_features(foobar PRIVATE cxx_strong_enums cxx_constexpr cxx_auto_type)</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!