qt - 生成代码的qmake规则

标签 qt qmake

我意识到我先前的问题对规则和依赖项有些困惑。如果qmake运行时目录“generated”中的源文件存在,则以下.pro文件生成一个makefile,该文件可以正常工作。

idl.target   = generated/qmtest.h
idl.commands = code_generator 
idl.config   = no_link
idl.depends  = $$SOURCES $$HEADERS $$FORMS

TEMPLATE       = app
INCLUDEPATH    += generated
SOURCES        += generated/*.cpp
PRE_TARGETDEPS += generated/qmtest.h
QMAKE_EXTRA_UNIX_TARGETS += idl

但是当qmake运行时,它仅生成一个makefile,而PRE_TARGETDEPS和QMAKE_EXTRA_UNIX_TARGETS并没有帮助我。我怎样才能让qmake生成一个makefile文件,该文件将把generate/的内容添加到SOURCES?

最佳答案

您可能需要分两次通过。

在您的qmake文件中,添加以下行:

include( generated/generated.pri )

然后,在code_generator脚本的末尾,将源添加到generate.pri文件中(以bash为例,但是对于几乎所有语言而言,想法都是相同的):
rm generated/generated.pri
for file in $( ls generated/*.cpp ); do
    echo "SOURCES += ${file}" >> generated/generated.pri
done

第一次运行qmake文件时,generate/generated.pri可能为空。运行make时,它将填充generate.pri文件。第二次,它将重新创建make文件(作为源.pri文件的更改),然后再次编译。您也许可以弄乱其他可以为您完成第二阶段操作的命令。

关于qt - 生成代码的qmake规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2006747/

相关文章:

c++ - 将组合框信号连接到 Qt 中的 std::function 的问题

c++ - 在文本文件的特定行和列上插入值

html - 在 QTWebKit 中从各种来源加载图像

c++ - Qt 5.3。 QtWidgets : No such file or directory #include <QtWidgets>

qt - 如何在 Qt qmake 文件(Windows)中使用环境变量?

Qt、qmake、pro 文件 : Add compiler name to target name

c++ - 使用 Qt 和 Boost 时出现链接器错误

MySQL 编译库

c++ - 对通过静态库调用的同一 .c 文件中定义的函数的 undefined reference

visual-studio - CMake 到 Qt Creator .pro 文件;从 Qt Creator 构建特定的 CMake 项目