2013-07-29 2 views
3

Вот строки, которые я добавил в моем .pro, чтобы установить настраиваемый dir.Настройка пути Makefile с qmake

BASEPATH = ../some/path/ 
CONFIG(debug, debug|release) { 
    BUILDDIR = $${BASEPATH}/debug 
} else { 
    BUILDDIR = $${BASEPATH}/release 
} 
OBJECTS_DIR = $${BUILDDIR}/obj 
MOC_DIR = $${BUILDDIR}/moc 
RCC_DIR = $${BUILDDIR}/rcc 
UI_DIR = $${BUILDDIR}/ui 
MAKEFILE = $${BUILDDIR}/Makefile 

Однако, он терпит неудачу с ошибкой:

error : No rule to make target `../project/project.pro', needed by `Makefile'. Stop. 

Это хорошо работает, если я удалить MAKEFILE=... линию, но я не хочу, чтобы Makefile, который будет выводиться в том же директории, чем исходные файлы ,

Я ищу какую-то невозможную вещь или MAKEFILE Неверная переменная для редактирования? Спасибо.

ответ

0

Вы слышали о shadow build?

Теневое здание означает строительство проекта в отдельной директории, каталог . Каталог сборки отличается от каталога источника . Одним из преимуществ теневого здания является то, что сохраняет ваш исходный каталог, что позволяет быстрее переключаться между конфигурациями сборки . Поэтому создание тени является наилучшей практикой , если вам нужно много конфигураций сборки для одного набора файлов .

Если вы строите свои проекты с помощью Qt Creator, тогда ознакомьтесь с его руководством: Editing Build Configurations. Однако, если вы строите его в командной строке, то см. Этот вопрос и ответ на SO: Manually configuring shadow build in qmake

+0

Да, обычно я создаю тень, но я явно хотел указать его в .pro, а не в .pro.user, так что для всех каталог сборки будет таким же, независимо от конфигурации и т. Д. –

+0

В этом случае я боюсь, что не могу вам помочь. Я прочитал документацию переменной MAKEFILE и попробовал ваш .pro-файл различными способами и обнаружил, что то, что вы пытаетесь сделать, похоже, не поддерживается: MAKEFILE задает ** имя ** файла Makefile, только имя, а не его путь: 'MAKEFILE: эта переменная указывает имя файла Makefile, который qmake должен использовать при выводе информации о зависимостях для построения проекта. Значение этой переменной обычно обрабатывается qmake или qmake.conf и редко нуждается в изменении. ' – Bill

+0

Eek ok, я прочитал его, но я этого не понял. Во всяком случае, я приму свой ответ, потому что теневая сборка - это ответ на мой вопрос в том, как я его сформулировал. –

0

Вы можете отделить их, добавив исходные файлы в отдельную папку src. Этот вопрос может помочь вам тоже: -

How to specify different Debug/Release output directories in QMake .pro file

+0

Да, я последовал этому вопросу, который привел к коду в моем сообщении, однако, если я не добавляю 'MAKEFILE = .. . 'Makefile не будет выводиться в указанном каталоге, а вместо этого находится в середине исходного кода. –

+0

Даже если исходные файлы находятся в другом каталоге? – TheDarkKnight

Смежные вопросы