C++ 代码优化—set(CMAKE_CXX_FLAGS_RELEASE “-O2“)

27 篇文章 2 订阅

在对导航代码进行交叉编译的时候,由于线程占CPU资源过大,我在CMake中添加如下优化

et(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -O2")

交叉编译可以通过,但是在目标平台arm上运行报线程相关错误。

于是有将上述替cmake换成如下:

set(CMAKE_CXX_FLAGS "-Wall -Wextra")
set(CMAKE_CXX_FLAGS_RELEASE "-O2")

程序正常运行,占用CPU资源也降下来了

这段CMake代码用于配置C++编译器的标和其他编译选项。让我来行解释它的意义: 1.set(CMAKE_VERBOSE_MAKEFILE "true")`这一行设置了生成详细的构信息,使得构建过程中的细输出可见。 2. `include(CCXXCompilerFlag)`:这行代码用于包一个CMake模块,模块用于检C++编译器是否支持定的编译器标志。 3. `CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)`:这行代码检查C++编译器是否支持`-std=c++11`编译器志。 4. `CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)`:这行代码检查C++编译器是否支持`-std=c++0x`编译器标志。通常情况下,`-std=c++11`更常用。 5. `if (COMPILER_SUPPORTS_CXX11)`:这行代码检查变量`COMPILER_SUPPORTS_CXX11`的值是否为真,即检查编译器是否支持C++11标准。 6. `set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")`:如果编译器支持C++11标准,将变量`CMAKE_CXX_FLAGS`设置为`-std=c++11`,将C++标准设置为C++11。 7. `elseif (COMPILER_SUPPORTS_CXX0X)`:如果编译器不支持C++11标准,检查变量`COMPILER_SUPPORTS_CXX0X`的值是否为真,即检查编译器是否支持C++0x标准。 8. `set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")`:如果编译器支持C++0x标准,将变量`CMAKE_CXX_FLAGS`设置为`-std=c++0x`,将C++标准设置为C++0x。 9. `else()`:如果编译器既不支持C++11标准,也不支持C++0x标准,则执行以下代码块。 10. `message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")`:输出一条错误信息,指示使用了不支持C++11标准的编译器,请使用其他支持C++11的编译器。 11. `set(ADDITIONAL_CXX_FLAG "-Wall -O3 -march=native")`:将变量`ADDITIONAL_CXX_FLAG`设置为一组额外的编译选项,包括启用所有警告(`-Wall`)、最高级别的优化(`-O3`)和本地CPU体系结构优化(`-march=native`)。 12. `set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ADDITIONAL_CXX_FLAG}")`:将变量`CMAKE_CXX_FLAGS`添加到额外的编译选项,以便编译器在构建过程中使用这些选项。 总而言之,这段CMake代码的目的是检查编译器是否支持C++11标准,如果支持,则将C++标准设置为C++11,并添加一组额外的编译选项。如果编译器不支持C++11标准,则输出错误信息并建议使用其他支持C++11的编译器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jack Ju

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值