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!