首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成代码的qmake规则

生成代码的qmake规则
EN

Stack Overflow用户
提问于 2010-01-05 22:51:50
回答 2查看 3.5K关注 0票数 9

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

代码语言:javascript
复制
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,它会将generated/的内容添加到源代码中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-07 02:32:49

您可能需要在两个过程中完成此操作。

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

代码语言:javascript
复制
include( generated/generated.pri )

然后,在code_generator脚本的末尾,将源代码添加到generated.pri文件中(本例使用bash,但几乎所有语言的想法都是相同的):

代码语言:javascript
复制
rm generated/generated.pri
for file in $( ls generated/*.cpp ); do
    echo "SOURCES += ${file}" >> generated/generated.pri
done

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

票数 5
EN

Stack Overflow用户

发布于 2017-02-11 00:45:21

我已经提出了一个解决方案,我相信它是健壮和通用的,它依赖于qmake生成一个GNU Makefile。

假设我们在一个名为Makefile.pri的文件中获得了所有额外的SOURCESHEADERS赋值,该文件通过执行脚本generate_Makefile.pri.sh生成,该脚本还生成Makefile.pri中提到的源和/或头文件。

我们希望该文件由构建系统本身自动且可靠地生成,以便包含在.pro文件中,以便qmake可以考虑其内容并生成具有适当依赖项的Makefile。

这就是我们必须放入.pro文件中的内容。

代码语言:javascript
复制
Makefile_pri.target   = Makefile.pri
Makefile_pri.commands = generate_Makefile.pri.sh
Makefile_pri.depends  = FORCE

Makefile.target  = $$MAKEFILE
Makefile.depends = Makefile_pri

include($$Makefile_pri.target)

QMAKE_EXTRA_TARGETS = Makefile Makefile_pri

这样:

  1. 如果没有Makefile.pri,则会创建它;
  2. 如果创建或更新了Makefile.pri,则qmake会再次运行并考虑其内容,从而重新生成qmake

如上所述,这个确实依赖于qmake生成GNU Makefile,但我相信同样的方法也可以适用于其他目标构建系统。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2006747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档