ソフトウェア開発におけるフラストレーションの 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 など) で呼び出されることを確認します。
<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 サイトの他の関連記事を参照してください。