如何在多目标 CMake 项目中高效配置编译器标志?
跨平台 CMake 项目中的高效编译器标志配置
为不同编译器和配置设置编译器选项
解决您对设置编译器选项的担忧对于不同的编译器和配置,这里有一个更新和改进的方法:
<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>
登录后复制
改进:
- 使用 CMake 3.8 中引入的 CMake 生成器表达式语法,更简单、更简洁。
- 利用 add_compile_options() 函数,它允许您以清晰易读的方式指定编译器选项。
- 无需手动设置 CMAKE_CXX_FLAGS 和相似的变量。
- 使用 target_compile_features() 指定 C 功能,而不是显式设置 C 标准。
多目标 CMake 项目
满足您对每个编译器和配置都有自己的目标的多目标项目,您可以使用以下方法:
<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>
登录后复制
改进:
- 创建多个目标基于编译器和配置组合的唯一名称。
- 分别为每个目标配置编译器标志和 C 功能。
最佳实践和进一步阅读
这里是一些可能有用的其他资源:
- [CMake 教程:多个目标](https://www.cmake.org/cmake-docs/latest/manual/cmake-tutorial/MultipleTargets.html )
- [CMake 打包和部署指南](https://cmake.org/cmake-docs/latest/manual/cmake-packaging.html#packaging-multiple-projects-in-a-single-project )
以上是如何在多目标 CMake 项目中高效配置编译器标志?的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保护它?
3 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)