ソフトウェア開発における課題の 1 つは、さまざまなコンパイラー バージョンとその機能セットとの互換性を確保することです。特に、コンパイラが C 11 をサポートしているかどうかを判断することは、新しい言語機能に依存するプロジェクトにとって重要です。
CMake は、この問題に対処する便利な方法を提供します。 CMake バージョン 3.1.0 以降では、アクティブなコンパイラーでサポートされている C 機能をリストする CMAKE_CXX_COMPILE_FEATURES 変数が提供されます。
実際には、この変数に直接依存するのではなく、CMake はは、C 言語の標準と機能を指定するための、より構造化されたメカニズムを提供します。
C 標準を明示的に指定する
1 つのオプションは、CXX_STANDARD および [ CMake ターゲットの &&&]CXX_STANDARD_REQUIRED プロパティ。これは、目的の C 標準とそれが必須であるかどうかを明示的に指定します (コンパイラーがサポートしていない場合、ビルドは失敗します)。
例:add_executable(prog main.cc)
set_property(TARGET prog PROPERTY CXX_STANDARD 11)
set_property(TARGET prog PROPERTY CXX_STANDARD_REQUIRED ON)
必要な C 機能の指定
または、target_compile_features コマンドを使用して、使用する C 機能を指定できます。あなたのターゲットによって。その後、CMake はこれらの機能から適切な C 標準を推定します。
CMAKE_CXX_KNOWN_FEATURES グローバル プロパティには、検討対象となる利用可能な C 機能がリストされます。
例: ]add_executable(foobar main.cc)
set(needed_features
cxx_strong_enums
cxx_constexpr
cxx_auto_type)
target_compile_features(foobar PRIVATE ${needed_features})
サポートされている機能を確認しています
コンパイラでサポートされている C 機能を確認するには: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()
これらのメソッドにより、CMake プロジェクトで使用される C 言語標準と機能を柔軟に制御できます。 免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3