ホームページ  >  記事  >  バックエンド開発  >  CMake を使用して C 11 互換性を自動的に検出および構成するにはどうすればよいですか?

CMake を使用して C 11 互換性を自動的に検出および構成するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 09:10:27668ブラウズ

How can CMake be Used to Automatically Detect and Configure C  11 Compatibility?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。