为额外的编译器 Qt 添加多个文件到输出

Posted

技术标签:

【中文标题】为额外的编译器 Qt 添加多个文件到输出【英文标题】:Add multiple files to output for extra compiler Qt 【发布时间】:2015-04-16 19:58:45 【问题描述】:

我无法将多个文件添加到 Qt 额外编译器的输出。 这是我的额外编译器的样子:

 new_target.input = $$INPUT_HEADERS
 new_target.output  = $$OUTPUT_FILES
 new_target.commands = python $$SCRIPT_NAME.py $$CONFIG_FILE --generate
 new_target.CONFIG += target_predeps
 new_target.variable_out = SOURCES
 new_target.dependency_type = TYPE_C
 QMAKE_EXTRA_COMPILERS += new_target

$$OUTPUT_FILES 不包含多个文件之前一切正常。(例如: OUTPUT_FILES=first.cpp second.cpp third.cpp) 因此,qmake 只识别提到的第一个。 是否可以将多个文件传递给 .output 字段? 我正在使用 Qt 4.8.6

【问题讨论】:

非常简单:每个目标一个输出。如果需要 3 个输出,则需要 3 个目标。 【参考方案1】:

正如docs 所说:

output - 从自定义编译器创建的文件名。

输出应该是一个文件,而不是多个。根据您要实现的目标,您可能需要为每个输出文件创建一个单独的编译器目标,或者使用for(iterate, list) 循环执行:

OUTPUT_TARGETS=first second third
for(_TARGET, OUTPUT_TARGETS) 
    eval($$_TARGET.input = INPUT_HEADERS)
    eval($$_TARGET.output = $$_TARGET.cpp)
    ...

    QMAKE_EXTRA_COMPILERS += $$_TARGET

【讨论】:

谢谢,这里是拼写错误,但代码中的一切都和你写的一样。 INPUT_HEADERSOUTPUT_FILES 来自哪里?也尽量省略$$ INPUT_HEADERSOUTPUT_FILES 在同一个 .pri 文件中形成得更早,我保证,它们的形成是正确的。 实际上,正如我所说,问题在于编译器忽略了“make”文件second.cppthird.cpp。这就是问题所在,其他一切正常。我不明白为什么这两个文件消失了 另一个澄清主要问题。 .output 不能是多个文件。

以上是关于为额外的编译器 Qt 添加多个文件到输出的主要内容,如果未能解决你的问题,请参考以下文章

qt多个工程之间调用

由makefile 如何生成QT 的pro 文件

Qt 多项目管理

qt qrc 文件名称中文

向 MinGW 添加额外的 include/lib 路径

Qt 编译器标志顺序