问题描述
我的项目结构如下:
Proj
Proj.pro
--subProj
--subProj.pro
----subsubProj
----subsubProj.pro
有没有办法可以在 subProj.pro 中实例化一个全局变量并将其称为 en,例如subsubProj.pro 喜欢:
Is there a way i can instance a global variable in subProj.pro and call it en e.g. subsubProj.pro like:
Proj.pro:
GLOBAL_VAR = true
subsubProj.pro:
subsubProj.pro:
message($$GLOBAL_VAR)
更新
也许我应该更准确地解决我的问题.
Update
Maybe I should more precise with my problem.
当您右键单击 Proj 并选择Build project"Proj"时,Qt Creator 中的通常行为是调用 qmake Proj.pro,然后调用 qmake subProj.pro,然后调用 subsubProj.pro
The usual behavior in Qt Creator when you right-click on Proj and choose "Build project"Proj"" is that qmake Proj.pro gets invoked then qmake subProj.pro and then subsubProj.pro
我想要实现的是:
- 当我构建项目Proj"时,只有 Proj.pro 和 subProj.pro 被调用(不是 subsubProj.pro)
- 但是:当我构建项目subProj"时,调用的文件是 subProj.pro 和 subsubProj.pro
您可以通过添加到 subProj.pro 来实现 1):
You achieve 1) by adding to subProj.pro:
TEMPLATE = subdirs
dont_invoke_subsub{
SUBDIRS = subsubProj
}
在这种情况下,当您执行 qmake Proj.pro 1) 时.但是,当您执行 qmake subProj.pro 时,subsubProj 也不会构建.
In this case when you do qmake Proj.pro 1) is fulfilled.BUT when you do qmake subProj.pro the subsubProj doesnt get built neither.
所以我的想法是将一个变量从 Proj 交给 subProj.
So my idea was to hand over a variable from Proj to subProj.
Proj.pro:
GLOBAL_VAR = true;
和 subProj 检索此变量:
and subProj retrieves this variable:
subProj.pro
TEMPLATE = subdirs
equals(GLOBAL_VAR, true){
# do nothing because Proj.pro invokes you
}
else {
# invoke qmake subsubProj.pro
SUBDIRS = subsubProj
}
推荐答案
我通过配置文件使用 include(...)
命令设法做到了这一点.
I managed to do that with the include(...)
command via config files.
另一种方式(但更为有限)是在 qmake
参数列表中使用 CONFIG+=GLOBAL_VAR
.该技术对于主"开关非常有用.
An other way (but more limited) is to use CONFIG+=GLOBAL_VAR
in the qmake
arguments list. That technique is quite useful for 'master' switchs.
但是在预构建过程(qmake 步骤)中,您不能更改 GLOBAL_VAR
的两个...
But with both of them you can't change the GLOBAL_VAR
during the pre-build process (qmake step) ...
这篇关于Qt:将变量传递给子项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!