【问题标题】:QMake runs code twice with subdirs project, regardless of !build_pass conditionQMake 使用 subdirs 项目运行代码两次,无论 !build_pass 条件如何
【发布时间】:2019-09-05 08:47:37
【问题描述】:

使用Qt 5.12。我一直在尝试让一些 QMake 命令只运行一次(而不是三次)。我找到了this answer,他们在其中使用了!build_pass 条件。所以我将我的工作目录设置如下:

│   subdirs_test.pro
│
└───test
        test.pro

test/test.pro 文件仅包含:

!build_pass:message("This message should appear only once")

subdirs_test.pro 包含:

TEMPLATE = subdirs

SUBDIRS = \
test

test.subdir = $$PWD/test

如果我跑:

cd test
qmake -tp vc test.pro

它打印出来了:

Project MESSAGE: This message should appear only once

但如果我运行subdirs 项目:

cd ..
qmake -r -tp vc subsdirs_test.pro

它打印消息两次

Project MESSAGE: This message should appear only once
Project MESSAGE: This message should appear only once

有没有办法让QMake只运行一次

【问题讨论】:

  • 你能试试吗? !build_pass:CONFIG(debug, debug|release) { message("Hello from build_pass during debug") }
  • 问题是消息需要运行一次,无论是选择调试还是发布构建。在您提出的建议中,它确实只会在调试过程中运行一次。但是在 CI 场景中,我们只执行发布传递,那么它就不会运行。

标签: qt qt5 qmake


【解决方案1】:
defineReplace(commonFunctionality) {
    message("commonFunctionality")
}

build_pass {
    CONFIG(debug, debug|release) {
        message("Debug")
        $$commonFunctionality();
    }
    CONFIG(release, debug|release) {
        message("Release")
        $$commonFunctionality();
    }
}


$ qmake -r -tp vc subdirs_test.pro
Project MESSAGE: Release
Project MESSAGE: commonFunctionality
Project MESSAGE: Debug
Project MESSAGE: commonFunctionality

$ qmake -r -tp vc test.pro
Project MESSAGE: Release
Project MESSAGE: commonFunctionality
Project MESSAGE: Debug
Project MESSAGE: commonFunctionality

【讨论】:

  • 所以这仍然会打印两次“commonFunctionality”?
猜你喜欢
  • 2013-02-22
  • 2010-11-27
  • 2012-02-24
  • 1970-01-01
  • 2021-08-21
  • 2013-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多