Qt:将变量传递给子项目

时间:2011-07-12 10:17:50

标签: qt parameter-passing qt-creator qmake

我的项目结构如下:

Proj
Proj.pro
--subProj
--subProj.pro
----subsubProj
----subsubProj.pro

有没有办法可以在subProj.pro中实例化一个全局变量并将其调用为例如subsubProj.pro喜欢:

Proj.pro:

GLOBAL_VAR = true

subsubProj.pro:

message($$GLOBAL_VAR)

更新

也许我应该更准确地解决我的问题。

当您右键单击Proj并选择“Build project”Proj“”时Qt Creator中的常见行为是qmake Proj.pro被调用然后qmake subProj.pro然后subsubProj.pro

我想要实现的目标是:

  1. 当我构建项目“Proj”时,只调用Proj.pro和subProj.pro(NOT subsubProj.pro)
  2. 但是:当我构建项目“subProj”时,调用的文件是subProj.pro和subsubProj.pro
  3. 通过添加到subProj.pro:

    来实现1)
    TEMPLATE = subdirs
    dont_invoke_subsub{
    SUBDIRS = subsubProj
    }
    

    在这种情况下,当你做qmake Proj.pro 1)时就满足了。 但是当你做qmake subProj.pro时,subsubProj也不会被构建。

    所以我的想法是将一个变量从Proj移交给subProj。

    Proj.pro:
    
    GLOBAL_VAR = true;
    

    和subProj检索此变量:

    subProj.pro
    
    TEMPLATE = subdirs
    equals(GLOBAL_VAR, true){
       # do nothing because Proj.pro invokes you
    }
    else {
       # invoke qmake subsubProj.pro
       SUBDIRS = subsubProj
    }
    

1 个答案:

答案 0 :(得分:4)

我设法通过配置文件使用include(...)命令执行此操作。

另一种方式(但更有限)是在CONFIG+=GLOBAL_VAR参数列表中使用qmake。这种技术对于“主”开关非常有用。

但是在这两个版本中,你无法在预构建过程中更改GLOBAL_VAR(qmake步骤)......