Qt:将变量传递给子项目

Dim*_*rij 7 qt qmake parameter-passing qt-creator

我的项目结构如下:

Proj
Proj.pro
--subProj
--subProj.pro
----subsubProj
----subsubProj.pro
Run Code Online (Sandbox Code Playgroud)

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

Proj.pro:

GLOBAL_VAR = true
Run Code Online (Sandbox Code Playgroud)

subsubProj.pro:

message($$GLOBAL_VAR)
Run Code Online (Sandbox Code Playgroud)

更新

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

右键单击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

你通过添加到subProj.pro来实现1):

TEMPLATE = subdirs
dont_invoke_subsub{
SUBDIRS = subsubProj
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,当你做qmake Proj.pro 1)完成.但是当你做qmake subProj.pro时,subsubProj也不会被构建.

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

Proj.pro:

GLOBAL_VAR = true;
Run Code Online (Sandbox Code Playgroud)

和subProj检索此变量:

subProj.pro

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

vri*_*nce 4

我设法用include(...)

另一种方法(但更有限)是使用CONFIG+=GLOBAL_VAR另一种方法(但更有限)是在qmake。该技术对于“主”开关非常有用。

但是对于它们两者,您都无法GLOBAL_VAR在预构建过程(qmake 步骤)中更改...