ホームページ > バックエンド開発 > C++ > CMake を使用してコンパイラの C 11 サポートを検出するにはどうすればよいですか?

CMake を使用してコンパイラの C 11 サポートを検出するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-29 16:58:02
オリジナル
861 人が閲覧しました

How Can I Use CMake to Detect C  11 Support in Compilers?

CMake を使用したコンパイラーでの C 11 サポートの検出

ソフトウェア開発における課題の 1 つは、さまざまなコンパイラー バージョンとその機能セットとの互換性を確保することです。特に、コンパイラが C 11 をサポートしているかどうかを判断することは、新しい言語機能に依存するプロジェクトにとって重要です。

CMake は、この問題に対処する便利な方法を提供します。 CMake バージョン 3.1.0 以降では、アクティブなコンパイラーでサポートされている C 機能をリストする CMAKE_CXX_COMPILE_FEATURES 変数が提供されます。

実際には、この変数に直接依存するのではなく、CMake はは、C 言語の標準と機能を指定するための、より構造化されたメカニズムを提供します。

C 標準を明示的に指定する

1 つのオプションは、CXX_STANDARD と CXX_STANDARD_REQUIRED プロパティ。これは、目的の C 標準と、それが必須であるかどうかを明示的に指定します (コンパイラーがサポートしていない場合、ビルドは失敗します)。

例:

<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>
ログイン後にコピー

必須の指定C 機能

または、

target_compile_features コマンドを使用して、ターゲットで使用される C 機能を指定できます。 CMake は、これらの機能から適切な C 標準を推定します。

CMAKE_CXX_KNOWN_FEATURES グローバル プロパティには、検討対象として利用可能な C 機能がリストされます。

例:

<code class="cmake">add_executable(foobar main.cc)
set(needed_features
    cxx_strong_enums
    cxx_constexpr
    cxx_auto_type)
target_compile_features(foobar PRIVATE ${needed_features})</code>
ログイン後にコピー

サポートされる機能の確認

コンパイラでサポートされる 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(feature in ${CMAKE_CXX_COMPILE_FEATURES})
    message(feature)
endforeach()</code>
ログイン後にコピー
これらのメソッドにより、C 言語を柔軟に制御できます。 CMake プロジェクトで使用される標準と機能。

以上がCMake を使用してコンパイラの C 11 サポートを検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート