LINUX.ORG.RU

Возможно ли скомпилировать qt приложение используя только Makefile?

 , ,


0

1

Возможно ли это? Не применять cmake и qmake, просто на мейкфайлах. Если можно, то как?

Зачем? Просто для развлечения, почему нет?

★★☆

Последнее исправление: Werenter (всего исправлений: 1)

Да, можно. Но нужно обмазываться рутинными вызовами moc/uic/rcc на разных файлах.

Так-то QMake берёт и генерирует тебе достаточно простенький Makefile, можешь открыть его и посмотреть, на его основе сделать обычный:

https://github.com/EXL/2048/blob/master/2048-MotoMAGX/Makefile

Я так делал когда-то для древнего Qt 2, но для Qt 4 и далее это всё нафиг не нужно, *.pro даёт тебе простенькую абстракцию.

EXL ★★★★★
()

ну учишь как пишутся мейкфайлы, пишешь ручками.. только нафига.. всё-таки не зря все эти скрипты\тулзы для генерации мэйкфайлов придумали чтобы кучу рутинны ручками не делать.

Thero ★★★★★
()

Можно и даже тривиально. Qt проекты отличаются от любых других только необходимостью звать uic/moc, просто пропиши для них цели.

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

cmake позволяет не думать ни о каких moc и uic, а просто указать список исходников и получить приложение, и оно соберётся где угодно.

slovazap ★★★★★
()

Можно. Только зачем?

Конфигуратор (Meson/CMake/Autotools/etc.) появился не от того, что кому-то скучно, а нужен в первую и главную очередь для того, чтобы сгенерировать файл проекта сборки (Makefile/build.ninja/name.vcproj и т.д.) сконфигурированный под конкретную среду сборки конкретного сборщика. Руками ты это делать быстро залюбишься, т.к. с ростом проекта число зависимостей и нюансов сборки на конкретных системах растёт экспоненциально.

SkyMaverick ★★★★★
()

Можно. Только во-первых, как тебя тут уже 10 раз спросили, зачем?

А во-вторых, одно дело, когда ты пишешь линукс-эксклюзив, и совсем другое — когда делаешь проект, который должен собираться как минимум под линуксом, виндой и макосью. В последнем случае мейкфайл стремительно начинает походить на раковую опухоль, ну или для каждой системы его придётся делать своим со всеми вытекающими.

GNU make — это такой ассемблер мира сборочных систем. Можно и на ассемблере прикладной код писать, только замучаешься, и он у тебя будет отнимать кучу времени, которую можно было бы добавить на добавление в проект новой функциональности, а то и просто пойти искупаться. :) Лучше использовать его по назначению, т.е. как промежуточный код.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 3)
Ответ на: комментарий от SkyMaverick

CMake судя по его синтаксису и качеству кода и документации более ранних версий появился как раз потому что его авторам было скучно, чисто по приколу сделали.

a1ba ★★
()