Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mengkonfigurasi Bendera Pengkompil dengan Cekap dalam Projek CMake Berbilang Sasaran?
Untuk menangani kebimbangan anda tentang menetapkan pilihan pengkompil untuk penyusun dan konfigurasi yang berbeza, berikut ialah pendekatan yang dikemas kini dan dipertingkatkan:
<code class="cmake">cmake_minimum_required(VERSION 3.15) project(HelloWorld) string( APPEND CXX_FLAGS "$<IF:$<CXX_COMPILER_ID:MSVC>," "/W4;$<$<CONFIG:RELEASE>:/O2>," "-Wall;-Wextra;-Werror;" "$<$<CONFIG:RELEASE>:-O3>" "$<$<CXX_COMPILER_ID:Clang>:-stdlib=libc++>" ">" ) add_compile_options("${CXX_FLAGS}") add_executable(HelloWorld "main.cpp") target_compile_features(HelloWorld PUBLIC cxx_lambda_init_captures)</code>
Penambahbaikan:
Untuk menangani keinginan anda untuk projek berbilang sasaran di mana setiap pengkompil dan konfigurasi mempunyai sasarannya sendiri, anda boleh menggunakan pendekatan berikut:
<code class="cmake">cmake_minimum_required(VERSION 3.15) project(HelloWorld) set(COMPILERS MSVC Clang GNU) set(CONFIGURATIONS Debug Release) foreach(_compiler IN LISTS COMPILERS) foreach(_config IN LISTS CONFIGURATIONS) add_executable(HelloWorld_${_compiler}_${_config} "main.cpp") # Set compiler flags for this target target_compile_options(HelloWorld_${_compiler}_${_config} PUBLIC "$<IF:$<CXX_COMPILER_ID:${_compiler}>," "/W4;$<$<CONFIG:${_config}>:/O2>," "-Wall;-Wextra;-Werror;" "$<$<CONFIG:${_config}>:-O3>" "$<$<CXX_COMPILER_ID:Clang>:-stdlib=libc++>" ">" ) # Set C++ feature requirements for this target target_compile_features(HelloWorld_${_compiler}_${_config} PUBLIC cxx_lambda_init_captures) endforeach() endforeach()</code>
Penambahbaikan:
Berikut adalah beberapa sumber tambahan yang mungkin membantu:
Atas ialah kandungan terperinci Bagaimana untuk Mengkonfigurasi Bendera Pengkompil dengan Cekap dalam Projek CMake Berbilang Sasaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!