Mengautomasikan Pengesanan Keserasian C 11 dalam CMake
Masalah:
Bagaimana CMake boleh digunakan untuk mengesan dan mengkonfigurasi keserasian C 11 secara automatik dalam projek?
Penyelesaian:
CMake Versi 3.1.0 dan Ke Atas:
Dengan CMake versi 3.1.0 atau lebih baru, coretan kod berikut membolehkan pengesanan ciri C yang disokong oleh pengkompil:
<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>
Mengkonfigurasi Piawaian C:
Daripada pengesanan manual, CMake menyediakan dua kaedah untuk mengisytiharkan standard C untuk penyusunan:
Spesifikasi Standard Eksplisit:
Tetapkan sifat sasaran CXX_STANDARD dan CXX_STANDARD_REQUIRED untuk menyatakan secara eksplisit standard C:
<code class="cmake">set_property(TARGET prog PROPERTY CXX_STANDARD 11) set_property(TARGET prog PROPERTY CXX_STANDARD_REQUIRED ON)</code>
Pengesanan Standard Bergantung Ciri:
Menggunakan
<code class="cmake">target_compile_features(foobar PRIVATE cxx_strong_enums cxx_constexpr cxx_auto_type)</code>
Menggunakan
features_compile_compile_compile > perintah, nyatakan ciri C yang diperlukan oleh projek. CMake akan menyimpulkan standard C yang sesuai daripada ciri-ciri ini:Fungsi Tambahan:Harta global CMake CMAKE_CXX_KNOWN_FEATURES menyediakan senarai ciri C yang diketahui. Ini membolehkan untuk mengesan ciri khusus yang disokong oleh pengkompil.
Atas ialah kandungan terperinci Bagaimanakah CMake boleh Digunakan untuk Mengesan dan Mengkonfigurasi Keserasian C 11 Secara Automatik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!