Artikel ini memberikan panduan tentang menetapkan bendera pengkompil dalam CMake merentas platform projek. Ia menangani kebimbangan yang dibangkitkan tentang pendekatan sedia ada dan meneroka metodologi yang dipertingkatkan.
Set pendekatan yang digunakan sebelumnya(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ..."), yang boleh digantikan dengan append(CMAKE_CXX_FLAGS "..."). Selain itu, "ungkapan penjana kotor" boleh digunakan untuk memperkenalkan syarat dan pilihan senarai secara ringkas:
<code class="cmake">string( APPEND _opts "$<IF:$<CXX_COMPILER_ID:MSVC>," "/W4;$<$<CONFIG:RELEASE>:/O2>," "-Wall;-Wextra;-Werror;" "$<$<CONFIG:RELEASE>:-O3>" "$<$<CXX_COMPILER_ID:Clang>:-stdlib=libc++>" ">" ) add_compile_options("${_opts}")</code>
Untuk keserasian ke belakang, sintaks alternatif menggunakan add_compile_options () boleh digunakan:
<code class="cmake">if(MSVC) add_compile_options("/W4" "$<$<CONFIG:RELEASE>:/O2>") else() add_compile_options("-Wall" "-Wextra" "-Werror" "$<$<CONFIG:RELEASE>:-O3>") if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") add_compile_options("-stdlib=libc++") else() # nothing special for gcc at the moment endif() endif()</code>
Daripada menentukan standard C secara manual, CMake moden bergantung pada penetapan ciri yang diperlukan:
<code class="cmake">target_compile_features(HelloWorld PUBLIC cxx_lambda_init_captures)</code>
Ini membolehkan CMake menentukan bendera pengkompil yang diperlukan untuk menyokong ciri.
Untuk mengelakkan direktori binaan berasingan bagi setiap pengkompil dan konfigurasi, skrip pembalut boleh susun berbilang konfigurasi dengan IDE seperti Visual Studio atau penjana CMake berbilang konfigurasi.
Atas ialah kandungan terperinci Bagaimana untuk Memodenkan Tetapan Bendera Pengkompil dalam Projek CMake Merentas Platform?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!