Russian Qt Forum
Апрель 20, 2024, 12:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Папки debug/release в теневой сборке  (Прочитано 7021 раз)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« : Август 03, 2016, 10:12 »

Привет, друзья!
В настройках проекта можно явно указать куда я хочу скидывать файлы, генерируемые компиляторами/компоновщиком для каждого типа конфигурации.
По какой-то причине в папке каждого типа конфигурации создаются директории debug и release. Причём в зависимости от конфигурации, одна из папок пустая. И получается, что путь ко вложенным подпроектам (библиотекам) необходимо настраивать весьма странным способом. Я как-то раньше обходил эту проблему, но как - не помню.
Что необходимо сделать, чтобы я мог чётко определить где я получу скомпилированную библиотеку?
Записан
Apktyc
Самовар
**
Offline Offline

Сообщений: 132


Просмотр профиля
« Ответ #1 : Август 03, 2016, 10:49 »

В .pro файле
DESTDIR - для указания пути куда будет помещен результат сборки.
PRECOMPILED_DIR = $$DESTDIR - для подавления создания папок debug и release.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #2 : Август 03, 2016, 11:02 »

Нет, PRECOMPILED_DIR не сработал. Qt 5.7.
Да и не самый это подходящий вариант, так как у меня имеется в подпроектах сторонняя либа, код которой, я бы хотел не трогать, чтобы не копировать к себе в репозиторий
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Август 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

Записан

ArchLinux x86_64 / Win10 64 bit
AlFoX
Гость
« Ответ #4 : Август 03, 2016, 16:58 »

CONFIG -= debug_and_release
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #5 : Август 04, 2016, 09:19 »

CONFIG -= debug_and_release
Помогает, только как быть с проектом, который нельзя редактировать? В аргументы запуска qmake не хотелось добавлять, т.к. хотелось бы больше автомата.

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

Сообщений: 579


Просмотр профиля
« Ответ #6 : Август 04, 2016, 09:28 »

Можно сделать свой проектный файл по принципу

Код:
CONFIG -= debug_and_release
include( other.pro )
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #7 : Август 04, 2016, 09:43 »

Да, но этот файл должен будет существовать в репозитории библиотеки и его невозможно будет включить в subdirs проект
Записан
AlFoX
Гость
« Ответ #8 : Август 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
« Последнее редактирование: Август 04, 2016, 17:50 от AlFoX » Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #9 : Август 05, 2016, 10:14 »

AlFoX, у меня всё равно в подпроектах создаётся дебаг и релиз. Эти советы работают только для проекта верхнего уровня. Подпроекты уже со своими конфигурациями собираются. Пока вышел из ситуации добавлением "CONFIG-=debug_and_release" в аргументы запуска qmake
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #10 : Август 05, 2016, 10:16 »

Дело в том, что я хочу максимально автоматизировать процесс сборки. Чтобы после скачивания репозитория была возможность без лишних телодвижений собрать проект
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 22.