LINUX.ORG.RU

Определить конфиг для подпроектов в верхнем проекте subdirs

 ,


0

2

Есть проект Qt/qmake типа subdirs, состоящий из подпроектов. Как сделать так, чтобы CONFIG в проекте subdirs попадал в подпроекты?

Для чего я это хочу. Чтобы, допустим, отдельно подпроект собирался без отладочных возможностей, а когда он в связке с тестовой программой, то чтобы собирался с отладкой.

Например:

TEMPLATE = subdirs
CONFIG += local_ip
SUBDIRS = \
	my_shit_software \
	test_soft
my_shit_software.pro:
local_ip {
	message("debug with local ip")
	DEFINES += USE_LOCAL_IP
} else {
	message("release mode")
}
Например, если это «release mode» то программа будет коннектиться к нужному серверу, а если «debug» то к localhost.

Я знаю что можно, наверное, зацепиться за debug/release, если subdirs проект открыт в debug конфигурации то это попадет во все подпроекты. Но что если мне нужно более одного CONFIG? Это возможно? Или например как-то явно задать что-то вроде SUBDIRS = my_shit_software:local_ip test_soft...

Если я для этого проекта «верхнего уровня» (subdirs) в среде Qt Creator задаю в дополнительных параметрах CONFIG+=local_ip то всё как надо срабатывает. А когда же внутри pro файла с subdirs - не реагирует и не распространяет для подпроекты...

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от four_str_sam

Похоже на то что надо:

The first feature is the .qmake.cache file, which is technically a .pri file that gets automatically included in every .pro file your project contains, including those in subdirectories

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от Torvus

Если проект собирается без верхнего pro файла (с subdirs) то этого global.pri быть не должно. Не подходит...

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от annulen

Это работает, я об этом сразу написал. Просто было бы приятно автоматом такое делать :)

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от four_str_sam

К огромному сожалению, .qmake.cache хоть и влияет, но неправильно. Ровно наоборот. Если он лежит в верхней папке где pro/subdirs оно не применяет конфиг из qmake.cache, а если внутри нужного проекта, то применяет в любом случае.

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

УМВР для Qt4. Сделал все как по ссылке и для всех подпроектов применяется содержимое .qmake.cache.in:

top_srcdir=$$PWD
top_builddir=$$OUT_PWD 

QMAKE_CXXFLAGS += -Wall -Werror=return-type

QMAKE_CFLAGS += -Wall -Werror=return-type

four_str_sam
()
Ответ на: комментарий от four_str_sam

У меня Qt 5, .qmake.conf тоже срабатывает. Но где бы он ни лежал - будь то в верхнем каталоге, либо в своем проекте - он всегда влияет. Тоже не подходит.

Рабочего решения не найдено.

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от four_str_sam

У меня тоже применяется для подпроектов когда .qmake.conf. Но мне надо чтобы когда я захожу в какой-то подпроект, то чтобы он уже не видел этот .qmake.conf.

т.е. когда я собираю проекты пачкой из верхнего каталога через pro/subdirs чтобы у меня включался некий CONFIG+=.

А если я собираю какой-то подпроект отдельно в его подкаталоге - этот CONFIG включаться не должен.

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от four_str_sam

Почему эта сволочь лезет в верхний каталог смотреть какие-то файлы?..

Может можно как-то определить, собирается ли проект отдельно или его вызвал pro верхнего уровня?

I-Love-Microsoft ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.