QMake-将变量传递给子项目

时间:2019-01-07 11:03:31

标签: qt qmake

我有一个带有以下项目文件的qmake项目:

. parent1.pro
. parent2.pro  
. child_common.pro

parent1和parent2都是子目录项目,并且以child_common作为子目录。

我是否可以通过child_common定义一个变量,该变量根据孩子使用的父级而具有不同的值?

例如:如果我正在编译parent1,则child_common应该具有变量MY_VAR = A。如果我正在编译parent2,则应该具有MY_VAR = B

1 个答案:

答案 0 :(得分:0)

好吧,实际上,这不是应该完成的工作(因为qmake永远不允许将其变量传递到SUBDIRS子项目中),因此最终您可能最终要拥有两个单独的{ {1}}个实例。但是,如果所有项目都属于同一个目录子树,则可以通过以下方式使用qmake的缓存文件。

首先,在您的公共根子目录child_common(或touch .qmake.cache.qmake.stash)中创建一个空的缓存文件。然后将以下内容添加到所有“父”项目中:

.qmake.super

现在MY_VAR = A # or B cache(MY_VAR, set) # or "set stash", or "set super" 应该在您的任何子项目中可见,只要该缓存文件存在于父目录中即可。但是请注意,缓存内容的更改不会自动暗示重建(子)项目。