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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-02 18:26:31237ブラウズ

How to Detect C  11 Support in Your Compiler with CMake?

CMake によるコンパイラの C 11 サポートの検出

ソフトウェア開発におけるフラストレーションの 1 つは、インストールされているコンパイラでサポートされていない機能を必要とするコードをコンパイルしようとすることです。たとえば、ユーザーが C 98 のみをサポートする古いコンパイラを使用している場合、C 11 を必要とするソフトウェア アプリケーションは正しくコンパイルされない可能性があります。そのような状況では、コンパイル時ではなく CMake の実行中にコンパイルが失敗する可能性があると便利です。

解決策

CMake バージョン 3.1.0 以降では、C コンパイラーがサポートする 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 機能を直接指定するのではなく、必要な C 機能を指定し、CMake に C 標準を推定させます。 CMake は、コンパイラが正しいフラグ (-std=c 11 など) で呼び出されることを確認します。

C 標準の明示的な宣言

<code class="cmake"># Explicitly set C++ standard and required features
add_executable(prog main.cc)
set_property(TARGET prog PROPERTY CXX_STANDARD 11)
set_property(TARGET prog PROPERTY CXX_STANDARD_REQUIRED ON)</code>

ターゲット コンパイル機能の使用

<code class="cmake"># Specify required C++ features and let CMake deduce the C++ standard
target_compile_features(foobar PRIVATE
  cxx_strong_enums
  cxx_constexpr
  cxx_auto_type)</code>

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

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