Maison  >  Article  >  développement back-end  >  Comment puis-je détecter la prise en charge de C 11 dans un compilateur utilisant CMake ?

Comment puis-je détecter la prise en charge de C 11 dans un compilateur utilisant CMake ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-01 08:10:30268parcourir

How can I detect C  11 support in a compiler using CMake?

Détection de la prise en charge de C 11 dans un compilateur avec CMake

Identification de la prise en charge du compilateur

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.

Spécification explicite de la norme C

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>

Spécification des fonctionnalités C requises

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>

Fonctionnalités C prises en charge

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn