QMake - 将变量传递给 child 个项目

QMake - pass variable to child projects

我有一个包含这些项目文件的 qmake 项目:

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

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

有没有办法让我定义一个可供 child_common 使用的变量,该变量具有基于 parent 和 child 使用的不同值?

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

好吧,事实上这不是应该如何完成的(因为 qmake 永远不允许将它的变量传递给 SUBDIRS 子项目),所以你最终可能会有两个单独的 child_common 个实例。但是,如果您的所有项目都属于同一目录子树,则可以通过以下方式使用 qmake 的缓存文件。

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

MY_VAR = A # or B
cache(MY_VAR, set) # or "set stash", or "set super"

现在 MY_VAR 应该在您的任何子项目中可见,只要缓存文件存在于父目录中。但请注意,缓存内容的更改不会自动暗示(子)项目重建。