QMake - передать переменную дочерним проектам - PullRequest
0 голосов
/ 07 января 2019

У меня есть проект qmake с этими файлами проекта:

. parent1.pro
. parent2.pro  
. child_common.pro

parent1 и parent2 оба являются проектами subdir и имеют в качестве дочернего каталога child_common.

Есть ли способ для меня определить переменную, которую можно использовать child_common, которая имеет другое значение в зависимости от того, каким родителем используется дочерний элемент?

Например: если я компилирую parent1, child_common должен иметь переменную MY_VAR = A. Если я компилирую parent2, он должен иметь MY_VAR = B

1 Ответ

0 голосов
/ 10 января 2019

Ну, на самом деле это не то, как все должно быть сделано (так как qmake никогда не позволяет передавать свои переменные в подпроекты SUBDIRS), так что в конечном итоге вы можете получить два отдельных экземпляра child_common. Однако, если все ваши проекты принадлежат одному и тому же поддереву каталога, вы можете использовать файл кэша qmake следующим образом.

Сначала создайте пустой файл кэша в вашем общем корневом подкаталоге: touch .qmake.cache (или .qmake.stash, или .qmake.super). Затем добавьте следующее во все ваши «родительские» проекты:

MY_VAR = A # or B
cache(MY_VAR, set) # or "set stash", or "set super"

Теперь MY_VAR должно быть видно внутри любого из ваших подпроектов, если файл кеша существует в родительском каталоге. Но обратите внимание, что изменения содержимого кэша автоматически не подразумевают перестройку (под) проекта.

...