LINUX.ORG.RU

qmake vs Autoconf/Automake для Qt4 приложений

 , ,


0

1

Как лучше распространять исходники приложения, использующего Qt:

1) Использовать autoconf и аutomake для конфигурации и сборки. Юзеру достаточно будет набрать ./configue && make install (в идеале)

2) С *.pro файлом. Написать в README, что для сборки нужно использовать qmake или открыть проект в QtCreator-е

3) Включить в архив исходников готовый Makefile, сделанный qmake-ом.

4) Скомбинировать 1 и 2 способы, configure скрипт при запуске вызывает qmake, и на основе его выхлопа чего-то химичит и создает полноценный Makefile (qmake вроде как не умеет создавать цель install)

Первый способ выглядит наиболее трудозатратным, но самым правильным. Остальные требуют от юзера/мейнтейнера лишних телодвижений. Стоит ли возиться? :)

★★★★★

вообще первый по правильности способ - это src пакет

если выбирать из предложенных, то тогда 2 вариант + пару README на тему зависимостей, сборки и установки, ИМХО так будет правильней, т.к. у разных пользователей разные дистры с разным устройством фс и шаг make install может сильно налажать

EugeneBas ★★ ()

я бы выбрал второй вариант. Не вижу особо лишних телодвижений в qmake && make -jx

gavlig ★★★ ()

1) No way!
2) Может быть
3) I think not
4) Умеет

anonymous ()

Есть два варианта:

1) Пользователь девелопер, тогда ему нужен вменяемый install.txt qmake там будет или нет - пофигу!

2) пользователь ни разу не девелопер, в таком случае он пользуется установщиком пакетов в своей системе. Следовательно мантейнер этой системы должен написать ebuild или что там его система требует. В этом случае qmake, cmake, и прочие тулзы тоже роли не играют

AF ★★★ ()

а почему бы не использовать cmake?

Stil ★★★★★ ()

Вариант 5, он же правильный:

Использовать cmake с проверкой зависимостей внутри, для чайников приложить README по сборке (mkdir build && cd build && cmake .. && make && make install).

Pavval ★★★★★ ()

Исходники надо готовить так, чтобы удобно было прежде всего разработчикам. Если «пользователь» собирает твои исходники, то это уже не пользователь и он и так разберется.

Reset ★★★★★ ()

сравнение autotools и qmake это сравнение теплого и мягкого. qmake это очень примитивный генератор Makefile-ов, который не умеет даже наличие зависимостей проверять (по крайней мере из коробки). как следствие, об отсутствии какой-то библиотеки станет известно не на этапе конфигурации, а уже на этапе компиляции, причем из текста ошибки не всегда очевидно, чего именно не хватет. поэтому использование qmake ИМХО оправдано только в очень простых проектах, у которых нет никаких зависимостей, кроме самой Qt. а вот CMake это да, альтернатива autotools. я бы тоже посоветовал изучить CMake, тем более что он совсем не сложен, но если ты действительно хорошо знаешь autotools, можно пользоваться и им. да, еще один аргумент в пользу CMake - его интегрируют в IDE (qtcreator, kdevelop), с autotools все намного хуже.

CryAngel ()

Первый способ выглядит наиболее трудозатратным, но самым правильным.

первый способ - это адский отстой, autotools давно пора запретить

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

cmake отличается от автотулзов тем, что его осваивать не нужно

не надо сказки рассказывать, каждый раз приходится искать, как в нем что-либо сделать

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

qmake это очень примитивный генератор Makefile-ов, который не умеет даже наличие зависимостей проверять (по крайней мере из коробки)

нормальные библиотеки поставляют файлы для pkgconfig, qmake их вполне годно детектит

а так и cmake не все проверяет, частенько попадались проекты с модулями для проверки какой-нибудь лабуды

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

а что ты предлагаешь использовать?

qmake же, ну

а зависимости - это головная боль мантейнеров пакетов

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

line 15289/15345 (END)
cmake отличается от автотулзов тем, что его осваивать не нужно

эпичное /0

anonymous ()
Ответ на: комментарий от dt1

Таки школы действительно не нужны.

anonymous ()
Ответ на: комментарий от dt1

не все собирают/ставят пакетами. есть например LFS и винда. да и в пакеты собирать с нормальной системой сборки намного проще. я не навязываю ни autotools, ни CMake, но qmake явно уступает им обоим.

CryAngel ()

2ое только qtcreator не нужен. qmake && make -j самое безгеморное решение.

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

чего? qmake? возможно, так как после беглого осмотра qmake он мне не понравился и я начал изучать CMake.

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

да и в пакеты собирать с нормальной системой сборки намного проще

абсолютно одинаково собирать пакеты с cmake и qmake, вот autotools - это полный привет

и qmake может быть и уступает в чем-то cmake, но для qt-проекта он явно лучше, хотя бы из-за отсутствия проблем с генерированием ts

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

именно с генерацией нет (и не может быть) проблем ни у qmake, ни у cmake, так как собственно генерацией занимается совсем другая, отдельная утилита. а вот для правльного вызова с правильными параметрами, в сложных проектах костыли приходится городить что в qmake, что в cmake. ну, может и не костыли, но не совсем тривиально это делать приходится.

CryAngel ()

cmake имеет говносинтаксис, хотя лишен многих багов qmake'а, как временное решение сойдет. А вообще лучше попробуйте qbs, он реально нашен. Думаю допилим его под нужды местных лоровцев и можно будет о cmake'е как о страшном сне забыть.

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

Чем же? Нормальный себе декларативный синтаксис, а не злостная императивщина в стиле 70ых годов, как в cmake. Еще говорят premake неплох.

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

вероятно потому, что я вырос на этой самой злостной императивщине 70ых годов. да и вообще, это же субъективное впечатление, которое не требует доказательств, оно просто есть и все.

CryAngel ()
Ответ на: комментарий от Gorthauer

пока qbs еще сырой

он похоже загнулся, по крайней мере Тролли говорят, что ресурсов на его разработку у них больше нет

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

Так там сейчас open governance, в общем нам он нужен, мы его пилим. qutIM не самый простой проект для сборки и если qbs сможет его собирать для всех платформ, то он вполне уже станет достаточно взрослым.

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

И потом сборка креатора им постоянно обновляется.

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

Кстати, если заинтересовал premake - могу помочь с переходом, есть плагин для криейтора, в планах поддержка ninja

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

Ты будешь смеяться, но в моём проекте именно он и юзается. Феерически неудобная хрень, проталкиваю идею о переходе на автолулзы, либо cmake.

DELIRIUM ☆☆☆☆☆ ()

в общем, сделал по первому варианту )

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

В принципе, это фреймворк для генерации всего, что захочется, по описанию проекта.

annulen ★★★★★ ()

Для Qt-проекта единственный нормальный способ распространений - qmake. В этом случае любой желающий сможет твой проект открыть в QtCreator и «побаловаться» с ним. Ментейнеры соберут проект с легкостью, ну а пользователи LFS и Windows сами выбрали себе путь. Так пусть продолжают страдать дальше.

P.S. Если проект действительно востребован под виндой, то можно конечно сделать для них собранный exe-файл и положить рядом Qt-либы. Но я бы не стал.

trex6 ★★★★★ ()

Используй CMake, оно того стоит.

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