我们有一个相当大的代码库。绝大多数代码是使用 qmake 编译以生成 makefile 的。但是,有一些子项目是通过运行批处理文件或运行其他程序产生的。
我希望能够使用 qmake 编译所有内容,但我不知道如何让 qmake 简单地运行脚本。
我尝试过的一件事是在我的专业文件中使用 QMAKE_EXTRA_TARGETS ,如下所示:
TEMPLATE = lib
SOURCES = placeholder.cpp
CONFIG += no_link staticlib
batch_runner.target = placeholder.cpp
batch_runner.commands = my_batch_file.bat
QMAKE_EXTRA_TARGETS = batch_runner
然后我必须让批处理文件像这样生成 placeholder.cpp:
# do the real work here
# ...
# create placeholder.cpp so qmake and nmake are happy
echo // dummy >> placeholder.cpp
这似乎工作正常。问题是它有点做作。如果我不指定batch_runner.target(即我将其留空)或不将placeholder.cpp 放在SOURCES 中,那么批处理文件永远不会运行。这是因为 qmake 没有使 batch_runner.commands 成为 Makefile 中任何其他依赖项的操作。
有没有更好的方法让 QMake 构建 Makefile 以便在 Makefile 执行时运行脚本?