Qt: передача переменных в подпроекты - PullRequest
7 голосов
/ 12 июля 2011

Структура моего проекта следующая:

Proj
Proj.pro
--subProj
--subProj.pro
----subsubProj
----subsubProj.pro

Есть ли способ, которым я могу создать глобальную переменную в subProj.pro и вызвать ее, например, en. subsubProj.pro как:

Proj.pro:

GLOBAL_VAR = true

subsubProj.pro:

message($$GLOBAL_VAR)

Обновление

Может быть, я должен быть более точным с моей проблемой.

Обычное поведение в Qt Creator, когда вы щелкаете правой кнопкой мыши на Proj и выбираете «Построить проект« Proj »», заключается в том, что вызывается qmake Proj.pro, затем qmake subProj.pro и затем subsubProj.pro

Чего я хочу добиться:

  1. Когда я создаю проект "Proj", запускаются только Proj.pro и subProj.pro (НЕ subsubProj.pro)
  2. НО: когда я создаю проект "subProj", используются следующие файлы: subProj.pro и subsubProj.pro

Вы достигаете 1), добавляя в subProj.pro:

TEMPLATE = subdirs
dont_invoke_subsub{
SUBDIRS = subsubProj
}

В этом случае при выполнении qmake Proj.pro 1) выполняется. НО, когда вы делаете qmake subProj.pro, sububProj также не создается.

Поэтому я хотел передать переменную из Proj в subProj.

Proj.pro:

GLOBAL_VAR = true;

и subProj извлекает эту переменную:

subProj.pro

TEMPLATE = subdirs
equals(GLOBAL_VAR, true){
   # do nothing because Proj.pro invokes you
}
else {
   # invoke qmake subsubProj.pro
   SUBDIRS = subsubProj
}

1 Ответ

4 голосов
/ 12 июля 2011

Мне удалось сделать это с помощью команды include(...) через файлы конфигурации.

Другой способ (но более ограниченный) - использовать CONFIG+=GLOBAL_VAR в списке аргументов qmake.Эта техника весьма полезна для «главных» переключателей.

Но с обоими из них вы не можете изменить GLOBAL_VAR во время процесса предварительной сборки (шаг qmake) ...

...