./configure для qmake-based проектов
Что бы очень не заморачиваться с формированием ./configure скрипта (и configure.exe программы для windows) при помощи autotools, когда вся их мощь не очень нужна, поможет проект qconf
Для Арчеводов, можно собрать из AUR svn версию: http://aur.archlinux.org/packages.php?ID=18686
Далее, на правах вольного пересказа английского README.
Intro
Итак, собираем, устанавливаем. Далее идем в корень вашего проекта, где лежит qmake файл, cоздаем там, для примера, файл myproject.qc примерно следующего содержания (это xml файл):
<qconf>
<name>myproject</name>
<profile>myproject.pro</profile>
</qconf>
дале пускаем: qconf myproject.qc
На выходе получаем скрипт ./confugure с функционалом, в базовой части соответствующей autotools.
Если запустить без аргумента, будет выбран первый найденный .qc файл, если их найдено не будет - автоматически будет выбран первый .pro файл, и на основе его собран минимальный .qc файл (как в примере выше).
На целевой машине qconf не нужен (нужные только его модули конфигурации, но логично распространять их с самим проектом), нужен только разработчику.
Итак, на этот момент мы имеем готовый ./configure скрипт, который запускаем без параметров или смотрим ./configure --help
.
Как это работает
После запуска ./configure, будет сформирован файл conf.pri, в котором будут содержаться различные переменные, отвечающие за сборку, основные из которых:
- PREFIX
- BINDIR
- LIBDIR
- QTDIR
Этот файл вы можете включать в ваш .pro файл: include(conf.pri)
Т.е. обобщая, как это работает: qconf формирует, на основе .qc файла, скрипт ./configure, который, будучи запущенным, выполняет нужные вам проверки, создает conf.pri, запускает qmake для вашего .pro файла, который (как я выше написал) может включать conf.pri файл (соответственно, все что будет записано в conf.pri - будет доступно для qmake).
Возможные директивы для .qc файла
<name>NAME</name>
- имя проекта<profile>FILE.pro</profile>
- .pro файл проекта<dep>...</dep>
- описываем зависимости, проверка на которые будет проводиться:```xml* `"type"` - определяет модуль (примеры модулей идут вместе с qconf, правда только два: qt31.qcm и qt41.qcm). Если type задана как **pkg**, проверка происходит при помощи pkg-config (выводы --libs и --cflags будут добавлены при компиляции): * опрашивается параметры: * `"name"` * `"pkgname"` * `"version"` в которой могут содержаться знаки отношения: ">=", "<=", иначе принимается "=" * `<required />` - определяет обязательность зависимости * `<disabled />` - зависимость выключена
<arg>DESRIPTION</arg>
- дополнительные агрументы для скрипта ./configure, сам аргумент будет доступен через переменную окружения QC_NAME (большими буквами, можно достучаться в модулях проверки через getenv), включают атрибуты:"name"
- имя"arg"
- значение
<lib />
- включает режима, когда собираемый проект - библиотека<static />
- в случае, если<lib />
, собирать статическую библиотеку
<noprefix />
- очищает PREFIX<nobindir />
- очищает BINDIR<prefix>PATH</prefix>
- задаем PREFIX (по умолчанию: /usr/local)<bindir>PATH</bindir>
- задаем BINDIR (по умолчанию: PREFIX/bin)<incdir>PATH</incdir>
- задаем INCDIR (по умолчанию: PREFIX/include)<libdir>PATH</libdir>
- задаем LIBDIR (по умолчанию: PREFIX/lib)<datadir>PATH</datadir>
- задаем DATADIR (по умолчанию: PREFIX/share)<qtdir>PATH</qtdir>
- задаем QTDIR<moddir>PATH</moddir>
- добавляет пути поиска модулей для<qt3 />
- конфигурация для qt3 окружения (но сама qconf зависит от qt>=4.1, используйте версию 1.1 для qt3)
Да, пример где используется - psi, там же, в директории qcm можно найти очень много приятных модулей проверки.
Ну и да, это всего лишь помощь к qmake, но не замена. Его тоже настраивать нужно. И читать руководства по нему.
PS пока очень сумбурно, потому как, сейчас сам только с ним столкнулся, потом будет дополняться, уточняться.