Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: __Heaven__ от Август 03, 2016, 10:12



Название: Папки debug/release в теневой сборке
Отправлено: __Heaven__ от Август 03, 2016, 10:12
Привет, друзья!
В настройках проекта можно явно указать куда я хочу скидывать файлы, генерируемые компиляторами/компоновщиком для каждого типа конфигурации.
По какой-то причине в папке каждого типа конфигурации создаются директории debug и release. Причём в зависимости от конфигурации, одна из папок пустая. И получается, что путь ко вложенным подпроектам (библиотекам) необходимо настраивать весьма странным способом. Я как-то раньше обходил эту проблему, но как - не помню.
Что необходимо сделать, чтобы я мог чётко определить где я получу скомпилированную библиотеку?


Название: Re: Папки debug/release в теневой сборке
Отправлено: Apktyc от Август 03, 2016, 10:49
В .pro файле
DESTDIR - для указания пути куда будет помещен результат сборки.
PRECOMPILED_DIR = $$DESTDIR - для подавления создания папок debug и release.


Название: Re: Папки debug/release в теневой сборке
Отправлено: __Heaven__ от Август 03, 2016, 11:02
Нет, PRECOMPILED_DIR не сработал. Qt 5.7.
Да и не самый это подходящий вариант, так как у меня имеется в подпроектах сторонняя либа, код которой, я бы хотел не трогать, чтобы не копировать к себе в репозиторий


Название: Re: Папки debug/release в теневой сборке
Отправлено: kuzulis от Август 03, 2016, 12:17
У меня ничо не создается (ни в Linux, ни в Windows):

1. Имею .qmake.conf в корне проекта

Код:
top_builddir=$$shadowed($$PWD)

2. И собственно, структура про-файлов приложения:

Код:
QT += gui widgets
TEMPLATE = app
CONFIG += c++11

TARGET = $$qtLibraryTarget($$TARGET)

DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII

HEADERS +=
SOURCES +=
FORMS +=
RESOURCES +=

DESTDIR = $$top_builddir/deploy-apps

3. И собственно, структура про-файлов плагинов:

Код:
QT = 
TEMPLATE = lib
CONFIG += plugin
TARGET = $$qtLibraryTarget($$TARGET)

DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII

HEADERS +=
SOURCES +=

OTHER_FILES = plugin.json

DESTDIR = $$top_builddir/deploy-apps/plugins-dir

И все складывается как надо.

PS: Qt 5.6/5.7 && QtC 4.0.3/3.5



Название: Re: Папки debug/release в теневой сборке
Отправлено: AlFoX от Август 03, 2016, 16:58
CONFIG -= debug_and_release


Название: Re: Папки debug/release в теневой сборке
Отправлено: __Heaven__ от Август 04, 2016, 09:19
CONFIG -= debug_and_release
Помогает, только как быть с проектом, который нельзя редактировать? В аргументы запуска qmake не хотелось добавлять, т.к. хотелось бы больше автомата.

kuzulis, тоже получается, что надо редактировать репозщиторий стороннего проекта.


Название: Re: Папки debug/release в теневой сборке
Отправлено: ssoft от Август 04, 2016, 09:28
Можно сделать свой проектный файл по принципу

Код:
CONFIG -= debug_and_release
include( other.pro )


Название: Re: Папки debug/release в теневой сборке
Отправлено: __Heaven__ от Август 04, 2016, 09:43
Да, но этот файл должен будет существовать в репозитории библиотеки и его невозможно будет включить в subdirs проект


Название: Re: Папки debug/release в теневой сборке
Отправлено: AlFoX от Август 04, 2016, 17:40
Не совсем понятна проблема. Почему он должен быть в репозитории?
Как-то так можно

CONFIG -= debug_and_release
exists($$PWD/../outsideRepoDir/thirdpartyLib/lib.pro){
    SUBDIRS += $$PWD/../outsideRepoDir/thirdpartyLib/lib.pro
}

Eще как вариант посморите на файл .qmake.cache в корне проекта. Он может содержать глобальные переменные. Туда можно поместить:
CONFIG -= debug_and_release


Название: Re: Папки debug/release в теневой сборке
Отправлено: __Heaven__ от Август 05, 2016, 10:14
AlFoX, у меня всё равно в подпроектах создаётся дебаг и релиз. Эти советы работают только для проекта верхнего уровня. Подпроекты уже со своими конфигурациями собираются. Пока вышел из ситуации добавлением "CONFIG-=debug_and_release" в аргументы запуска qmake


Название: Re: Папки debug/release в теневой сборке
Отправлено: __Heaven__ от Август 05, 2016, 10:16
Дело в том, что я хочу максимально автоматизировать процесс сборки. Чтобы после скачивания репозитория была возможность без лишних телодвижений собрать проект