qmake在工程管理subdirs传递变量到pro中

有时候我们用subdirs来管理多个项目。

加入这个项目可以通过某个变量来构建不同版本的程序,那么就会存在一个配置文件,然后改这个文件就生成不同版本。例如:

Config.pri这样写:

# 定义当前项目标识
APP_CONFIG_NAME = F*ckPelosi
又或者
APP_CONFIG_NAME = F*ckUsa

在实际项目myApp.pro中包含这个pri就可以使用

include (./Config.pri)

那我不想更改这个Config.pri怎么办,我想把一个变量传给pri,因为我用同一个subdirs编译的的话,每次更改APP_CONFIG_NAME都要重新编译,不想花这个时间。

这时候也是有解决方法的,典型的多工程管理 multiProj.pro 可以这样写:

TEMPLATE = subdirs
SUBIDRS = ../proj1 ../porj2

目录架构:

proj1
proj2
multiProj
    multiProj.pro

如果打开multiPorj.pro编译,那么每次都会编译到同一个目录,例如multiProj/build,我想不同的配置编译到不同目录。那么可以这样,新建多个multiProj目录:

multiProjFuckPelosi
    multiProj.pro
multiProjFuckUsa
    multiProj.pro

这样中间文件一般会编译到:multiProjFuckPelosi/build和multiProjFuckUsa/build,只要在更改multiProj.pro一下:

DEFINES += APP_CONFIG_NAME_PRE=F*ckPelosi

然后在Config.pri直接用即可:

APP_CONFIG_NAME = $$APP_CONFIG_NAME_PRE

这样,不用的构建目录自己定义不同的变量传到Config.pri就可以实现不同的配置。


还有个情况,cmake一般都支持生成config.h头文件,qmake也可以,只要指定:

QMAKE_SUBSTITUTES += myconfig.h.in

然后就会在build目录生成myconfig.h了。


这是qmake生成h文件给代码用,前面说的是变量给qmake使用,顺序相反。

还有个比较傻的方案就是用 cat() 函数读取文件。

本文为3YL原创,转载无需联系,但请注明来自labisart.com。

原创文章不易,如果觉得有帮助,可打赏或点击右侧广告支持:

查看打赏记录

发表评论请遵守党国法律!后台审核后方可显示!
  • 最新评论
  • 总共0条评论
  • Blog v1.1© 2022 labisart.com 版权所有 | 联系:labartwork@163.com