zoukankan      html  css  js  c++  java
  • cmake编译选项

    1 需求

    现在已经有一个cmake工程,我想要添加-O0 -g,生成gdb的调试信息和不进行代码优化。

    也就是说,我该怎样修改CFLAGS和CPPFLAGS?

    2 在project后面添加

    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -g")

    关于CMAKE_C_FLAGS

    它将这里设置的-O0 -g追加到CFLAGS前面。这样不能解决问题,因为默认原来会有-O3,会覆盖前面刚刚加的-O0。

    这个不分debug和release。

    3 CFLAGS有多个相同的编译选项,哪个生效呢?

    比如-O0 -O3同时存在。

    后面的会覆盖前面的。

    gcc -O0 -O3 test.c -o test,则执行O3优化

    gcc -O3 -O0 test.c -o test,不执行优化

    4 最好的解决办法

    如果是编译release版本的话,

    mkdir Release

    cd Release

    cmake -DCMAKE_BUILD_TYPE=Release ..

    make

    如果是编译debug版本的话,

    mkdir Debug

    cd Debug

    cmake -DCMAKE_BUILD_TYPE=Debug ..

    make

    这里CMAKE_C_FLAGS_DEBUG默认只是有一个“-g”,所以,可以在此基础上添加优化选项

    set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0")

    set(CMAKE_C_FLAGS_Release "${CMAKE_C_FLAGS_Release} -O3")

  • 相关阅读:
    cnpm镜像安装
    wxParse解析html
    C++回调函数
    QT源码分析:QTcpServer
    QT实现支持加密的Sqlite数据库引擎
    VS2013+OpenCV3.4.2编译
    Android Tcp操作
    使用Delphi开发linux应用
    QT5.10+MinGW+OpenCV3.4.2编译
    C++ ActiveX开发的问题讨论
  • 原文地址:https://www.cnblogs.com/hustdc/p/10226508.html
Copyright © 2011-2022 走看看