Qt Subdirs, где один проект генерирует исходные / заголовочные файлы, используемые в другом проекте - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть проект 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 для связи между двумя программами,Чтобы сгенерировать RPC-файлы, необходимые для обоих вышеуказанных проектов 2/3, я создал project1 для запуска команд компилятора midl.exe.

Если сначала я скомпилирую project1, то скомпилирую project2 и project3вручную то все работает нормально.Однако, если я поместил три проекта в проект Qt subdirs и у меня есть проект 2/3, зависящий от проекта 1, это не сработает.Проблема в том, что при запуске qmake в проекте 2/3 сгенерированные файлы еще не существуют, но эти файлы действительно существуют после фактической компиляции проекта 1.

Так есть ли способ каким-то образом поместить все три из этих проектовв один проект subdirs и как-то «отложить» 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
...