LINUX.ORG.RU

[Qt Creator] указать куда бинари вываливать

 


0

2

Qt Creator 2.0.1 у меня. Начиная с какой-то версии все стало собираться в папку «***-build-desktop». В корне под git-ом есть проект с SUBDIRS где указаны все подпроекты.

1) Как заставить Qt Creator (или qmake?) помещать все бинарники в папку $КОРЕНЬ-ПРОЕКТА/bin? 2) Как заставить его все временные файлы также помещать в папку $КОРЕНЬ-ПРОЕКТА/temp

1) и 2) необходимо чтобы можно было чистить абсолютно все временные файлы при помощи git clean. Если они за $КОРЕНЬ-ПРОЕКТА то уже не очистятся естественно.

3) Проблема: если собирать в Qt Creator 2.0.1 проект с SUBDIRS где исполняемый файл и библиотека (.so), то при запуске оно напишет ошибка что библиотека не грузится и не может быть найдена вообще, т.е. новые правила сборки путают пути и программа не видит библиотеку. Хотя в старой версии все отлично собирается работает и отлаживается...

Подскажите, пожалуйста, как решить эти три проблемы?

xxx.pro:

MOC_DIR = build/moc
OBJECTS_DIR = build/obj
UI_DIR = build/ui
RCC_DIR = build/rcc
DESTDIR = build/out

продолжать?

arsi ★★★★★
()

Если в самом криэйторе, то Projects —> Build Settings и в Build directory указать $SOURCEDIR/bin. Но лучше прописать это в .pro-файле.

Насчет git clean: не проще ли игнор использовать?

Apple-ch ★★
()

В QtCreator не так давно появилась настройка Shadow Build, которая перекрывает настройки в .pro файле и пишет в те самые «***-build-desktop», ее нужно отключить в Projects->Имя проекта->Targets->Build Settings->General->Shadow Build.

YesSSS ★★★
()

Все три проблемы решаются с помощью CMake.

1 и 2 - советую разделять директорию и исходными файлами и директорию сборки, разделять как на жёстком диске, так и в голове. Завтра вы захотите собрать проект в режиме Release или с каком-нибудь отладочным функционалом или с другой версией Qt (посмотреть, не отвалилось ли что, пощупать новые плюшки) - и тогда вы озадачитесь вопросом, как же это всё ложится на существующую систему директорий. Это уже не говоря, что директория с иходниками должна быть всегда в состоянии, готовом к упаковке. А рекурсивный поиск файлов для добавления в репозиторий должен выдавать только исходники.

3 - в CMake это решается с помощью rpath, которые по-умолчанию включены для связанных целей в проекте, чтобы успростить отладку. Думаю в QMake должно быть так же, сравните Makefile предыдущей и текущей версий на наличие опции --rpath в LFLAGS.

Dendy ★★★★★
()

Спасибо всем! Выключение shadow build решило проблему.

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

Спасибо, это помогло :) Еще вопросик :) У меня subdirs-проект, он открывается в Qt Creator, но по дефолту выставляется не тот что надо проект для запуска, приходится вручную выбирать. Есть ли возможность в .pro файле указать «главный» проект? Чтобы когда я жму run то запускался именно он?

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

Не знаю как для subdirs, но для нескольких открытых проектов точно можно выбирать активный кнопкой над кнопкой запуска(Ctrl T). Если не поможет, возможно нужный проект определяется по номеру, т.е. может берется первый из subdirs.

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

Спасибо.

ЗЫ Проблема что программа не видит SO-шку заключалась в том, что раньше Qt Creator выставлял LD_LIBRARY_PATH, а сейчас по всей видимости нет... Если вручную указать эту переменную в настройках проекта то работает как прежде...

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