Qt:将变量传递给子项目
我的项目的结构如下:
Proj
Proj.pro
--subProj
--subProj.pro
----subsubProj
----subsubProj.pro
有没有一种方法可以在 subProj.pro 中实例化全局变量并调用它,例如 subsubProj.pro ,例如:
Proj.pro:
GLOBAL_VAR = true
subsubProj.pro:
message($$GLOBAL_VAR)
Update
也许我应该更准确地解决我的问题。
当您右键单击 Proj 并选择“构建项目“Proj””时,Qt Creator 中的通常行为是先调用 qmake Proj.pro,然后调用 qmake subProj.pro,然后调用 subsubProj.pro
我想要实现的是:
- 当我构建时项目“Proj”仅调用 Proj.pro 和 subProj.pro(不是 subsubProj.pro)
- 但是:当我构建项目“subProj”时,调用的文件是 subProj.pro 和subsubProj.pro
您可以通过添加到 subProj.pro 来实现 1):
TEMPLATE = subdirs
dont_invoke_subsub{
SUBDIRS = subsubProj
}
在这种情况下,当您执行 qmake Proj.pro 1) 时,就完成了。 但是当你执行 qmake subProj.pro 时, subsubProj 也不会被构建。
所以我的想法是将一个变量从 Proj 移交给 subProj。
Proj.pro:
GLOBAL_VAR = true;
subProj 检索该变量:
subProj.pro
TEMPLATE = subdirs
equals(GLOBAL_VAR, true){
# do nothing because Proj.pro invokes you
}
else {
# invoke qmake subsubProj.pro
SUBDIRS = subsubProj
}
The structure of my project is as follow:
Proj
Proj.pro
--subProj
--subProj.pro
----subsubProj
----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:
message($GLOBAL_VAR)
Update
Maybe I should more precise with my problem.
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
What I want to achieve is:
- When i build the project "Proj" only Proj.pro and subProj.pro get invoked (NOT subsubProj.pro)
- BUT: When i build the project "subProj" the invoked files are subProj.pro and subsubProj.pro
You achieve 1) by adding to subProj.pro:
TEMPLATE = subdirs
dont_invoke_subsub{
SUBDIRS = 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.
So my idea was to hand over a variable from Proj to subProj.
Proj.pro:
GLOBAL_VAR = true;
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
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我设法通过配置文件使用
include(...)
命令来做到这一点。另一种方法(但更有限)是在
qmake
参数列表中使用CONFIG+=GLOBAL_VAR
。该技术对于“主”开关非常有用。但是对于这两种方法,您都无法在预构建过程(qmake 步骤)期间更改 GLOBAL_VAR ...
I managed to do that with the
include(...)
command via config files.An other way (but more limited) is to use
CONFIG+=GLOBAL_VAR
in theqmake
arguments list. That technique is quite useful for 'master' switchs.But with both of them you can't change the
GLOBAL_VAR
during the pre-build process (qmake step) ...