在跨平台 CMake 项目中设置编译器标志的现代方法
使用 CMake 生成器和表达式
CMake 提供了多种以现代且灵活的方式设置编译器标志的方法。一种方法是使用 CMake 生成器和表达式,例如:
<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()
另一种方法是使用 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 项目时,这是很好的实践遵循以下准则:
多目标构建
要在同一目录中构建多个目标,请为每个编译器和配置组合创建单独的构建配置,例如:
然后,您可以使用 make 目标来构建每个配置:
以上是如何在跨平台 CMake 项目中设置编译器标志?的详细内容。更多信息请关注PHP中文网其他相关文章!