我有一个Qt项目,其中包含许多子项目。我遇到一个问题,其中一个项目会生成在其他一些项目中使用的文件(.cpp和.h文件)。这是目录结构的示例:
src
\- master.pro
\- project1
\- project1.pro
- myHeader.h <generated AFTER project1.pro runs>
- mySource.cpp <generated AFTER project1.pro runs>
\- project2
\- project2.pro <needs to include mySource.cpp>
- main.cpp <includes myHeader.h>
\- project3
\- project3.pro <needs to include mySource.cpp>
- main.cpp <includes myHeader.h>
更具体一点,上面的project2
和project3
实际上分别是服务器和客户端项目,它们使用RPC调用在两个程序之间进行通信。为了生成以上project2 / 3都需要的RPC文件,我创建了project1
来运行midl.exe编译器命令。
如果我先手动编译project1
,然后手动编译project2
和project3
,那么一切正常。但是,如果我将这三个项目放入Qt subdirs
项目中,并且使project2 / 3依赖于project1,则它将不起作用。问题是,当qmake在project2 / 3上运行时,生成的文件尚不存在,但是这些文件在project1实际编译后确实存在。
那么有没有办法将这三个项目全部放入一个子目录项目中,并以某种方式“推迟”依赖项目的qmake?还是这样做,以便从属项目知道这些文件在qmake时可能不存在,但在编译时将存在?
预先感谢您的任何建议。
修改
更多信息。这是我的master.pro
文件的样子
TEMPLATE = subdirs
SUBDIRS += project1 project2 project3
project1.file = $$PWD/project1/project1.pro
project2.file = $$PWD/project2/project2.pro
project2.depends = project1
project3.file = $$PWD/project3/project3.pro
project3.depends = project1