ソフトウェア開発における課題の 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>
以上がCMake を使用してコンパイラの C 11 サポートを検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。