Cara Moden untuk Menetapkan Bendera Pengkompil dalam Projek CMake Merentas Platform
Penyelesaian Elegan Menggunakan Ungkapan Penjana CMake
Walaupun pendekatan anda sah, CMake moden menyediakan penyelesaian yang lebih ringkas dan mantap menggunakan ungkapan penjana CMake:
cmake_minimum_required(VERSION 3.8) project(HelloWorld) 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}")
Berbanding dengan pendekatan asal anda, kaedah ini memanfaatkan:
Pemberhentian Tetapan Bendera Manual
Seperti yang anda perhatikan, biasanya tidak digalakkan untuk menetapkan CMAKE_CXX_FLAGS dan pembolehubah serupa secara manual. Sebaliknya, lebih suka menggunakan fungsi add_compile_options() untuk menambahkan pilihan tanpa mengubah suai bendera global.
Persediaan Projek Berbilang Sasaran
Untuk mencipta berbilang sasaran dengan pilihan berbeza dalam direktori yang sama, anda boleh menggunakan sifat sasaran CMake:
add_executable(HelloWorld_Debug_Clang HelloWorld.cpp) target_compile_options(HelloWorld_Debug_Clang PRIVATE "-std=c++1z;-W4") target_link_libraries(HelloWorld_Debug_Clang PRIVATE libc++) add_executable(HelloWorld_Release_Gcc HelloWorld.cpp) target_compile_options(HelloWorld_Release_Gcc PRIVATE "-std=c++1z;-W3") target_link_libraries(HelloWorld_Release_Gcc PRIVATE libstdc++)
Pendekatan ini membolehkan anda menentukan pilihan pengkompil yang berbeza untuk setiap sasaran, sambil menyimpan satu fail projek.
Moden Terbaik Amalan
Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Bendera Pengkompil dalam Projek CMake Merentas Platform Menggunakan Ungkapan Penjana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!