Salah satu kekecewaan dalam pembangunan perisian ialah cuba menyusun kod yang memerlukan ciri yang tidak disokong oleh pengkompil yang dipasang. Sebagai contoh, aplikasi perisian yang memerlukan C 11 mungkin tidak menyusun dengan betul jika pengguna mempunyai pengkompil lama yang hanya menyokong C 98. Dalam keadaan sedemikian, adalah berguna jika kompilasi boleh gagal semasa CMake dijalankan dan bukannya pada masa penyusunan.
CMbuat versi 3.1.0 dan kemudiannya membenarkan pengesanan ciri C yang disokong oleh pengkompil 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>
Dalam kebanyakan kes, anda tidak perlu menentukan ciri C secara langsung tetapi sebaliknya nyatakan ciri C yang diperlukan dan biarkan CMake menyimpulkan piawaian C. CMake kemudiannya akan memastikan bahawa pengkompil digunakan dengan bendera yang betul (cth., -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>
Atas ialah kandungan terperinci Bagaimana untuk Mengesan Sokongan C 11 dalam Pengkompil Anda dengan CMake?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!