Ark*_*aid 7 compiler-construction flags g++ cmake
我想要在发布模式中添加特定的编译器cxx标志.我在另一个线程中读到-O2是发布配置的好标志
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O2")
Run Code Online (Sandbox Code Playgroud)
但如果我现在检查CXX标志
message(${CMAKE_CXX_FLAGS_RELEASE})
Run Code Online (Sandbox Code Playgroud)
他写信给我
-O3 -DNDEBUG -Wall -O2
Run Code Online (Sandbox Code Playgroud)
最好的祝福
小智 10
使用编译器文档来查看O2和O3之间的区别并做出选择(例如 - gcc.在这里你可以找到使用O2来保证稳定性的建议.
您可以使用此宏来删除标志:
macro(remove_cxx_flag flag)
string(REPLACE "${flag}" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
endmacro()
Run Code Online (Sandbox Code Playgroud)
[用法]
macro(remove_cxx_flag flag)
string(REPLACE "${flag}" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
endmacro()
message(${CMAKE_CXX_FLAGS_RELEASE}) # print "-O3 -DNDEBUG"
remove_cxx_flag("-O3")
message(${CMAKE_CXX_FLAGS_RELEASE}) # print "-DNDEBUG"
Run Code Online (Sandbox Code Playgroud)
这里使用宏是因为你需要从父范围更新变量,请阅读 - http://www.cmake.org/cmake/help/v2.8.10/cmake.html#command:macro(或者你可以使用PARENT_SCOPE的函数修改)
NDEBUG用于禁用断言,请参阅用于(在不同平台上)的NDEBUG预处理器宏是什么?了解更多信息.
| 归档时间: |
|
| 查看次数: |
11475 次 |
| 最近记录: |