Qt:将变量传递给子项目

发布于 2024-11-19 15:03:36 字数 1174 浏览 4 评论 0原文

我的项目的结构如下:

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

我想要实现的是:

  1. 当我构建时项目“Proj”仅调用 Proj.pro 和 subProj.pro(不是 subsubProj.pro)
  2. 但是:当我构建项目“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:

  1. When i build the project "Proj" only Proj.pro and subProj.pro get invoked (NOT subsubProj.pro)
  2. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

守望孤独 2024-11-26 15:03:36

我设法通过配置文件使用 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 the qmake 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) ...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文