Qt:将变量传递给子项目

Qt:将变量传递给子项目,qt,parameter-passing,qt-creator,qmake,Qt,Parameter Passing,Qt Creator,Qmake,我的项目结构如下: Proj Proj.pro --subProj --subProj.pro ----subsubProj ----subsubProj.pro 是否有一种方法可以在subsubj.pro中引用全局变量并将其称为en,例如subsubProj.pro,类似于: Proj.pro: GLOBAL_VAR = true subsubProj.pro: message($$GLOBAL_VAR) TEMPLATE = subdirs dont_invoke_subsub{ SU

我的项目结构如下:

Proj
Proj.pro
--subProj
--subProj.pro
----subsubProj
----subsubProj.pro
是否有一种方法可以在subsubj.pro中引用全局变量并将其称为en,例如subsubProj.pro,类似于:

Proj.pro:

GLOBAL_VAR = true
subsubProj.pro:

message($$GLOBAL_VAR)
TEMPLATE = subdirs
dont_invoke_subsub{
SUBDIRS = subsubProj
}
更新 也许我应该更准确地处理我的问题

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

我想要实现的是:

  • 当我构建项目“Proj”时,只调用Proj.pro和subj.pro(而不是subsubProj.pro)
  • 但是:当我构建项目“subProj”时,调用的文件是subProj.pro和subsubProj.pro
  • 通过将以下内容添加到subProj.pro,可以实现1):

    message($$GLOBAL_VAR)
    
    TEMPLATE = subdirs
    dont_invoke_subsub{
    SUBDIRS = subsubProj
    }
    
    在这种情况下,当您执行qmake Proj.pro 1)时,已完成。 但是当你做qmake subProj.pro时,subsubProj也不会被构建

    所以我的想法是把一个变量从Proj交给subj

    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
    }
    

    我通过配置文件使用
    include(…)
    命令实现了这一点

    另一种方法(但更有限)是在
    qmake
    参数列表中使用
    CONFIG+=GLOBAL\u VAR
    。这种技术对于“主”切换非常有用


    但是在预构建过程(qmake步骤)中,使用这两种方法,您无法更改
    全局变量

    .pri
    文件正是为此目的而设计的。你能举个例子吗?