qt生成具有生成文件之间依赖关系的额外编译器

时间:2010-09-22 22:49:13

标签: qt code-generation dependencies qmake

qmake可以处理生成的源文件的依赖关系吗?

我们有一个这样的prf文件:

idl_h.name = Generate .H file for ${QMAKE_FILE_BASE}.idl
idl_h.input = IDLS  # variable containing our input files
idl_h.variable_out = HEADERS
idl_h.commands = <command that takes .idl and genrates .h>
idl_h.output = $$IDL_GEN_DIR/${QMAKE_FILE_BASE}.h
QMAKE_EXTRA_COMPILERS += idl_h

这一代工作正常,并在制作时创建.h文件。问题是输入文件($$IDLS)彼此依赖,并不总是以正确的顺序构建。我们有类似app.idl的内容,其中包含:

#include "common.idl"

以下似乎应该有效

idl_h.depend_command = g++ -EE ... $$IDL_GEN_DIR/${QMAKE_FILE_BASE}.h

但显然是depend_command is not actually executed


另一个想法是解析原始idl中的依赖项:

idl_h.depends = $$system(cat ${QMAKE_FILE_IN} | grep "^#include" | sed -re 's/#include\s+["<]([^.]+)\.idl[">]/\1.h/')

但似乎我的qmake语法失败了。

1 个答案:

答案 0 :(得分:1)

尝试添加

idl_h.dependency_type = TYPE_C

到您的prf,然后删除.depend_command和.depends