Maison >développement back-end >C++ >Comment puis-je détecter la prise en charge de C 11 dans un compilateur utilisant CMake ?
CMake à partir de la version 3.1.0 fournit CMAKE_CXX_COMPILE_FEATURES pour identifier les fonctionnalités C prises en charge par le compilateur.
Définissez les propriétés cibles CXX_STANDARD et CXX_STANDARD_REQUIRED pour spécifier la norme souhaitée :
<code class="cmake">add_executable(prog main.cc) set_property(TARGET prog PROPERTY CXX_STANDARD 11) set_property(TARGET prog PROPERTY CXX_STANDARD_REQUIRED ON)</code>
Utilisez target_compile_features pour spécifier des fonctionnalités C spécifiques et CMake en déduira la norme appropriée :
<code class="cmake">project(foobar CXX) add_executable(foobar main.cc) set(needed_features # Specify the required C++ features used in the program cxx_strong_enums cxx_constexpr cxx_auto_type) target_compile_features(foobar PRIVATE ${needed_features})</code>
Le code suivant répertorie les fonctionnalités C prises en charge par votre version de CMake :
<code class="cmake">cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) get_property(known_features GLOBAL PROPERTY CMAKE_CXX_KNOWN_FEATURES) foreach(i ${known_features}) message("${i}") endforeach()</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!