本文提供了有關在跨平台CMake 中設定編譯器標誌的指南項目。它解決了對現有方法提出的擔憂,並探索了改進的方法。
之前的方法使用了set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ..."),它可以替換為append(CMAKE_CXX_FLAGS "... ")。此外,「髒生成器表達式」可用於簡潔地引入條件和列出選項:
<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>
為了向後相容,可以使用add_compile_options 的替代語法() 可以使用:
<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>
現代CMake 不是手動指定C 標準,而是依賴指定所需的功能:
<code class="cmake">target_compile_features(HelloWorld PUBLIC cxx_lambda_init_captures)</code>
這允許CMake 確定支援該功能所需的編譯器標誌。
為了避免每個編譯器和配置單獨的建置目錄,包裝器腳本可以使用 Visual Studio 等 IDE 或多配置 CMake 產生器編譯多個配置。
以上是如何現代化跨平台 CMake 專案中的編譯器標誌設定?的詳細內容。更多資訊請關注PHP中文網其他相關文章!