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
应该在您的任何子项目中可见,只要缓存文件存在于父目录中。但请注意,缓存内容的更改不会自动暗示(子)项目重建。
我有一个包含这些项目文件的 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
应该在您的任何子项目中可见,只要缓存文件存在于父目录中。但请注意,缓存内容的更改不会自动暗示(子)项目重建。