• 在Qt项目中添加全局宏变量来达到按方案编译的目的


    遇到一个需求,需要根据不同需要编译所需程序,本人采用了在QtCreator中建立不同的构建设置,配合宏的方式来实现:

    1、在项目-构建设置中,添加构建配置
    2、在构建步骤里的qmake中的额外参数一栏填入:"DEFINES += XXXX",也就是对应的宏变量
    3、按照上述方法再次添加别的构建配置与宏变量。
    4、之后便可以在项目使用
    #ifdef XXXX
    #endif
    的方式来判断。

    下面是从一些别的blog中的资料:

    变量用法:

    1、自定义变量:
      MY_VARIABLE = value
      定义了一个变量MY_VARIABLE,并将值设置为value。
    2、变量值的传递:
      可以通过在其它任何一个变量的变量名前加$$来把这个变量的值分配给当前的变量。例如:
      MY_DEFINES = $$DEFINES  
      现在MY_DEFINES变量包含了项目文件在这点时DEFINES变量的值。这也和下面的语句一样:
      MY_DEFINES = $${DEFINES}
    原文地址:
    http://blog.csdn.net/u013639526/article/details/43983755

    变量赋值:
    DEFINES += HELLO=\"$$PWD/\"
    DEFINES += SUCCESS=\"string\"
    在.cpp中测试代码如下:
    #ifdef HELLO
    qDebug()<<"HELLO="<<HELLO;
    #else
    qDebug()<<"bye";
    #endif
    #ifdef HELLO
    qDebug()<<"SUCCESS="<<SUCCESS;
    #else
    qDebug()<<"bye";
    #endif

    条件编译:

     debug{
        TARGET = XXd
      }
      release{
        TARGET = XX
      }
      上面代码的意思是:如果是debug版本,可执行程序的名字是xxd,否则就是xx。可以这样写:
      debug:TARGET = xxd
      release:TARGET = XX
      作用域也可以嵌套使用,例如:
      win32{
        debug{
          TARGET = xxwd
        }
      }

    判断是否存在定义的宏:

    DEFINES += CLIENT
    contains( DEFINES, CLIENT ) {
    # VERSION contains 'CLIENT'
    message( "Configuring for CLIENT build..." )
    #must be last
    ICON = $${TARGET}.png
    DESKTOP_FILE = $${TARGET}.desktop
    include(../install.pri)
    }

    Qt项目管理(33个规则)
    https://www.cnblogs.com/findumars/p/5602073.html

    QMake常用语法
    http://www.cnblogs.com/yuohoo/archive/2013/03/11/2954556.html
    http://www.cnblogs.com/yuohoo/archive/2013/03/11/2954594.html
    https://www.cnblogs.com/yuohoo/archive/2013/03/11/2954631.html
    http://www.cnblogs.com/yuohoo/archive/2013/03/12/2956533.html

    更多详细信息可以参考文档
    qmake Function Reference

  • 相关阅读:
    Vim命令合集
    感知机算法
    【项目】搜索广告CTR预估(二)
    【项目】搜索广告CTR预估(一)
    Kernel Logestic Regression
    SVM3 Soft Margin SVM
    Bias and Variance
    SVM2---核函数的引入
    贪心题目汇总
    Divergent series
  • 原文地址:https://www.cnblogs.com/blueroses/p/8288219.html
Copyright © 2020-2023  润新知