CMake での C 11 互換性検出の自動化
問題:
CMake はどのように利用できますかC 11 互換性を自動的に検出して構成するには、プロジェクト?
解決策:
CMake バージョン 3.1.0 以降:
CMake バージョン 3.1.0 以降、次のコード スニペットは、によってサポートされている 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(i ${CMAKE_CXX_COMPILE_FEATURES}) message("${i}") endforeach()</code>
C 標準の構成:
手動検出の代わりに、CMake はコンパイル用の C 標準を宣言する 2 つのメソッドを提供します:
明示的な標準仕様:
ターゲットのプロパティを設定しますCXX_STANDARD および CXX_STANDARD_REQUIRED を使用して C 標準を明示的に指定します。
<code class="cmake">set_property(TARGET prog PROPERTY CXX_STANDARD 11) set_property(TARGET prog PROPERTY CXX_STANDARD_REQUIRED ON)</code>
機能依存の標準検出:
を使用します。のtarget_compile_features コマンドで、プロジェクトに必要な C 機能を指定します。 CMake は、次の機能から適切な C 標準を推定します。
<code class="cmake">target_compile_features(foobar PRIVATE cxx_strong_enums cxx_constexpr cxx_auto_type)</code>
追加機能:
CMake グローバル プロパティ CMAKE_CXX_KNOWN_FEATURES は、次のリストを提供します。既知の C 機能。これにより、コンパイラがサポートする特定の機能を検出できるようになります。
以上がCMake を使用して C 11 互換性を自動的に検出および構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。