我有一个带有以下项目文件的qmake项目:
. parent1.pro
. parent2.pro
. child_common.pro
parent1和parent2都是子目录项目,并且以child_common作为子目录。
我是否可以通过child_common定义一个变量,该变量根据孩子使用的父级而具有不同的值?
例如:如果我正在编译parent1,则child_common应该具有变量MY_VAR = A。如果我正在编译parent2,则应该具有MY_VAR = B
答案 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"
应该在您的任何子项目中可见,只要该缓存文件存在于父目录中即可。但是请注意,缓存内容的更改不会自动暗示重建(子)项目。