Bagaimana untuk Menetapkan Bendera Pengkompil dalam Projek CMake Merentas Platform?

Barbara Streisand
Lepaskan: 2024-11-03 12:07:03
asal
760 orang telah melayarinya

How to Set Compiler Flags in Cross-Platform CMake Projects?

Cara Moden untuk Menetapkan Bendera Pengkompil dalam Projek CMake Merentas Platform

Menggunakan Penjana dan Ekspresi CMake

CMake menyediakan beberapa kaedah untuk menetapkan bendera pengkompil dengan cara yang moden dan fleksibel. Satu pendekatan ialah menggunakan penjana dan ungkapan CMake, seperti:

<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>
Salin selepas log masuk

Menggunakan add_compile_options()

Kaedah lain ialah menggunakan arahan add_compile_options() yang membolehkan anda menambah bendera pengkompil dengan cara yang lebih mudah dibaca dan konsisten:

<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>
Salin selepas log masuk

Amalan Terbaik

Apabila menyediakan projek CMake merentas platform, ia adalah amalan yang baik untuk mengikuti garis panduan ini:

  • Gunakan penjana dan ungkapan CMake atau add_compile_options() untuk menetapkan bendera pengkompil.
  • Elakkan mengubah suai CMAKE_CXX_FLAGS dan pembolehubah serupa secara manual.
  • Gunakan target_compile. () untuk menentukan ciri C bergantung kepada kod anda, kerana ia menyediakan pengendalian ralat yang lebih baik daripada menetapkan standard C secara eksplisit.
  • Pertimbangkan untuk menggunakan skrip pembalut atau IDE berbilang konfigurasi untuk membina berbilang konfigurasi dengan konfigurasi CMake tunggal.

Binaan Berbilang Sasaran

Untuk membina berbilang sasaran dalam direktori yang sama, buat konfigurasi binaan berasingan untuk setiap pengkompil dan gabungan konfigurasi, seperti:

  • x86-Debug-Clang
  • x86-Release-Clang
  • x86-Debug-MSVC
  • x86-Release-MSVC

Kemudian, anda boleh menggunakan make target untuk membina setiap konfigurasi:

  • make x86-Debug-Clang
  • make x86-Release-Clang
  • make x86-Debug-MSVC
  • buat x86-Release-MSVC

Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Bendera Pengkompil dalam Projek CMake Merentas Platform?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan