我的项目结构如下:

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

有没有办法我可以在subProj.pro中实例化全局变量并例如将其命名为subsubProj.pro像:

Proj.pro:
GLOBAL_VAR = true

subsubProj.pro:
message($$GLOBAL_VAR)

更新

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

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

我想要实现的是:
  • 当我构建项目“Proj”时,仅Proj.pro和subProj.pro会被调用(而不是subsubProj.pro)
  • 但:当我构建项目“subProj”时,调用的文件是subProj.pro和subsubProj.pro

  • 通过添加到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
    }
    

    最佳答案

    我设法通过配置文件使用include(...)命令做到了这一点。

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

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

    关于Qt:将变量传递给子项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6662644/

    10-12 19:41