Кроссплатформенное программирование под Unix-ы

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Olej » 12 фев 2021, 01:32

Odin_KG писал(а):
11 фев 2021, 21:20
Именно поэтому я принял решение Экспортировать результат в какую-нибудь среду разработки, где есть и компилятор и отладчик.
Именно так - любой фронт-энд IDE должен только, как максимум:
- подготовить командную строку запуска и запустить стандартный компилятор - в Linux это gcc/g++, clang, ... может ещё что-то альтернативно, в Windows - это их единственный компилятор ... сейчас названия не вспомню;
- подготовить сценарий сборки ... я бы тут сконцентрировался на make + Cmake + Ninja - любые "проекты" компиляции-сборки которые строят многие IDE, это только в большой минус.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Olej » 12 фев 2021, 01:42

Odin_KG писал(а):
11 фев 2021, 21:20
Не... мне вообще не нужна никакая система сборки. Я просто открываю файл проекта той же Visaul Studio в "блокноте" и визуально определяю, как там всё устроено, а потом генерирую эту структуру из своей программы, подставляя свои файлы и другие настройки. То же самое касается и code::blocks-а. В результате пользователь получает готовый проект напрямую без всяких посредников. Более того, пользователь обязательно будет в настройках проекта делать какие-то личные действия, которые я не могу предугадать, типа включать оптимизацию или свои файлы добавлять. Со своей стороны я могу в существующий файл проекта вносить лишь те изменения, которые касаются лично моей программы, т.е. я могу не трогать изменения пользователя.
Это, вообще-то и есть описание "на пальцах" системы сборки.
Только той,которая принята в конкретной определённой IDE. Хотя они все используют под своими "проектами" стандартные системы сборки из числа немногих.

А какую IDE как "дружественную" ... "дуальную" вы собираетесь использовать под Linux? А уж тем более под MacOS?

Под Linux программисты разработчики вообще не любят использовать навороченные IDE, которые к мире Linux и существуют больше как ... декорации. :lol:

Загляните сюда: IDE - я так думаю, что надо очень тщательно изучить состояние дел в этой области + по состоянию на самые свежие релизы (конец 2020-го - 2021-й годы) ... и только потом, возможно, принимать какие-то решения.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Olej » 12 фев 2021, 01:48

Odin_KG писал(а):
11 фев 2021, 21:20
Предположим, что пользователь не имеет установленный GTK на своем ПК.
Это почти невозможно - GTK+ установится при начальной инсталляции Linux, ещё до 1-го логина, при установке графического DE: LXDE, Xfce, Mate, Cinnamon...
Odin_KG писал(а):
11 фев 2021, 21:20
Как я понимаю - это не является для программиста проблемой и он просто установит этот GTK.
Возможно в KDE или LXQt придётся доустанавливать, но это - минутное дело, из стандартного репозитория, стандартными манипуляциями...
Возможно кому-то понадобится/захочется доставить для себя (для разработки) developer-ские пакеты графического фреймворка, *-dev ... но это тоже минутное дело.
Odin_KG писал(а):
11 фев 2021, 21:20
Но дальше теперь этот программист залил приложение на сайта и его начали скачивать уже не программисты, а обычные пользователи. И у некоторых из них этот GTK не установлен. Вопрос: у них будет работать это приложение без установленного GTK ?
Хороший вопрос. ;-)
Odin_KG писал(а):
11 фев 2021, 21:20
Но дальше теперь этот программист залил приложение на сайта и его начали скачивать уже не программисты, а обычные пользователи. И у некоторых из них этот GTK не установлен. Вопрос: у них будет работать это приложение без установленного GTK ?
Простой ответ: нет не будет. ;-)
Более развёрнутые ответы:
- это почти невозможно (см. выше);
- в Linux приложения распространяются не в виде "залитых приложений", а в виде пакетов для пакетной системы, DEB или RPM - разработчик программы (даже "Hello World") должен уметь собирать инсталляционные пакеты ... без этого те же пользователи ему ноги их жопы повыдёргивают :-? ; а установочный пакет *.deb/*.rpm по зависимостям сам выкачает из сети недостающие для его работы пакеты и их установит;
- ещё популярный способ в Linux - распространять приложения в исходном программном коде Linux ... в последние годы такие проекты модно как правило размещать на публичных GIT серверах в виде GIT-репозиториев приложений (см. использование GIT); в таких случаях в сопроводительном README на том же репозитории всегда описывается инструкция какие пакеты нужно доустановить и как это сделать;
Odin_KG писал(а):
11 фев 2021, 21:20
Практически, я спрашиваю, будет ли GTK полностью содержаться внутри уже собранного программистом приложения ? Если конечному пользователю GTK в установленном виде уже не нужен, то это вполне приемлемый вариант.
Такое возможно при статической сборке, когда библиотеки прикомпоновываются в состав приложения.
Это очень плохой способ, и очень плохой стиль!
Это так делается зачастую с приложениями в Windows, Windows-way. :twisted: ... потому там и приложения "интегрированные" и монструозные :-o - по сотням мегабайт.
В Linux/MacOS приложения, в хорошем стиле, используют разделяемые (shared, DLL, *.so) библиотеки - многие приложения используют совместно только одну копию всем им нужной библиотеки.
В последние годы (3-5 лет, кажется так) и в мире Linux появилась такие же монструзные сборки, называемые snap-пакетами, пропихивает их Ubuntu (от ubuntu никогда и ничего путнего не последовало в Linux) - но это типичное протягивание Windows-way в мир Linux.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Olej » 12 фев 2021, 02:11

Odin_KG писал(а):
11 фев 2021, 21:20
Всегда что-то берется за основу, а остальное подгоняется под эту основу. В Windows функция Drag & Drop работает как "необходимо и достаточно". Эти возможности я и закладываю в "требования", а все остальные мне просто не нужны, даже если они и будут где-то присутствовать.
Есть ещё такой аспект любого программного проекта ... в большинстве именно недоработка в нём, пренебрежение к этому вопросу, и является в результате причиной закрытия, сворачивания проекта - имя им таким "легион".
А именно: чёткое позиционирование - на кого, на какой контингент пользователей рассчитывается проект?
Это нужно детально проработать, продумать ещё до начала самого проекта, и уж тем более до выбора его инструментария.

Мне кажется почему то, что вы недостаточно много думали над этим вопросом ... если думали вообще. ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Olej » 12 фев 2021, 02:42

Odin_KG писал(а):
11 фев 2021, 21:20
Всегда что-то берется за основу, а остальное подгоняется под эту основу. В Windows функция Drag & Drop работает как "необходимо и достаточно". Эти возможности я и закладываю в "требования", а все остальные мне просто не нужны, даже если они и будут где-то присутствовать.
Ну так:
- сформулируйте описание задачи прототипа - самого минимального макета, который будет делать только эту одну из требуемых вам операций;
- напишите код для такого простейшего прототипа...
- выкладывайте его сюда - будем обсуждать что там не так работает...
- если не готов написать такой простейший код - то что сдерживает? где искал? что пробовал?

Odin_KG
Активист
Сообщения: 13
Зарегистрирован: 10 фев 2021, 01:52
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Odin_KG » 12 фев 2021, 22:22

Olej писал(а):
12 фев 2021, 01:42
А какую IDE как "дружественную" ... "дуальную" вы собираетесь использовать под Linux? А уж тем более под MacOS?
На Mac OS однозначно нужно использовать XCode, так как он там официальный от Apple. На Linux-е меня устраивает Code::blocks, так как я им более-менее умею пользоваться, а также он есть и на Windows и Mac OS. Я, честно говоря, не рассматриваю платформу Linux как основную - мне пока нужно, чтобы она просто была и этого достаточно. Если вдруг получится так, что продукт получит положительные оценки пользователей, то можно без проблем добавить любую IDE, но на текущем этапе моя первичная задача дотянуть работу до релиза. Остальное сейчас не сильно принципиально.
Под Linux программисты разработчики вообще не любят использовать навороченные IDE, которые к мире Linux и существуют больше как ... декорации.
Ну, это дело вкуса, но лично я не представляю как можно делать большие проекты из командной строки. Программировать и собирать-то можно, а вот искать ошибки, когда отладчик полная хрень - это очень тяжко. В этом плане мне очень нравится Visual Studio, а всё остальное, что я видел, включая Code::blocks и XCode мне совершенно не нравится. Но, может быть, это дело привычки.
- в Linux приложения распространяются не в виде "залитых приложений", а в виде пакетов для пакетной системы, DEB или RPM - разработчик программы (даже "Hello World") должен уметь собирать инсталляционные пакеты
Меня это как раз устраивает, так как по сути это решает проблему с установкой GTK. Только не хотелось бы, чтобы на каждый вариант Linux-а нужно было делать собственный пакет и класть его в отдельный репозитарий :-D.
Такое возможно при статической сборке, когда библиотеки прикомпоновываются в состав приложения.
Это очень плохой способ, и очень плохой стиль!
Статическая сборка как минимум нужна на Windows и Mac OS. Для меня главное, что она в принципе есть, а "красота стиля" - это уже дело десятое.
Это так делается зачастую с приложениями в Windows, Windows-way. :twisted: ... потому там и приложения "интегрированные" и монструозные :-o - по сотням мегабайт.
Раньше на Windows тоже рекомендовали использовать одну общую версию установленной библиотеки, но это очень скоро привело к путанице с версиями. Это явление получило название "DLLs Hell". В Windows-е нет толкового механизма, чтобы определять, какая именно версия библиотеки нужна приложению. В результате все стали просто копировать динамические библиотеки в папку с программой. В принципе, я не вижу в этом ничего страшного, пока, как вы правильно говорите, Viber не начинает занимать 180 Мб, а там и графики-то никакой нет. Это, конечно, криворукость. Но в моем случае, программа получается небольшой по размеру, так что всё это меня не сильно беспокоит.
А именно: чёткое позиционирование - на кого, на какой контингент пользователей рассчитывается проект?
Я делаю "для себя" в первую очередь, а там видно будет... в любом случае, у меня нет никакой возможности заниматься заранее планированием, так как практика показывает, что по ходу создания все первоначальные планы обычно полностью пересматриваются, что произошло и в данном случае.
- сформулируйте описание задачи прототипа - самого минимального макета, который будет делать только эту одну из требуемых вам операций;
Я собираюсь в ближайшее время закончить с задачей, которую я сейчас делаю, а далее попробовать разобраться с GTK. Как там это пойдет и что будет получаться, я пока не знаю. В любом случае, ваши советы оказались для меня весьма полезными с точки зрения общего понимания происходящего :-) Благодарю за помощь!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Olej » 12 фев 2021, 23:52

Odin_KG писал(а):
12 фев 2021, 22:22
На Linux-е меня устраивает Code::blocks
На Linux Code::blocks как-раз практически никто не использует всерьёз ... за исключением, разве что, учащихся лицеев-гимназий, да и то в глубинке :lol:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Olej » 13 фев 2021, 00:10

Odin_KG писал(а):
12 фев 2021, 22:22
Только не хотелось бы, чтобы на каждый вариант Linux-а нужно было делать собственный пакет и класть его в отдельный репозитарий
Никаких "каждый вариант Linux-а" - есть несколько (очень немного) различающихся пакетных систем ... а по существу только 2: DEB (Drbian, Ubuntu, Mint, antiX, и др.) и RPM (линия RedHat - Fedora, CentOS, Scientific и др.).
Все остальные дистрибутивы (числом уж больше сотни) используют из этих 2-х, может с вариациями (AltLinux, Astra, ROSA, Mageia, ...) или свою собственную, но их юзеры умеют пересобирать пакеты ( ArchLinux, Manjaro, Slackware и др.).

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Olej » 13 фев 2021, 01:23

Odin_KG писал(а):
12 фев 2021, 22:22
Я делаю "для себя" в первую очередь, а там видно будет...
Так не бывает :lol:
Odin_KG писал(а):
12 фев 2021, 22:22
Я собираюсь в ближайшее время закончить с задачей, которую я сейчас делаю, а далее попробовать разобраться с GTK. Как там это пойдет и что будет получаться, я пока не знаю.
Как будет формулировка и что-то получаться - показывайте сюда?

Odin_KG
Активист
Сообщения: 13
Зарегистрирован: 10 фев 2021, 01:52
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Odin_KG » 13 фев 2021, 02:37

Olej писал(а):
12 фев 2021, 23:52
На Linux Code::blocks как-раз практически никто не использует всерьёз ... за исключением, разве что, учащихся лицеев-гимназий, да и то в глубинке
На текущий момент - это не очень важно. Я рассматриваю аудиторию Linux-ов как крайне малочисленную. В любом случае, если приложение не конкретно под iOS/Android, то обычно его будут делать в Windows, а остальные OS пойдут как приятное дополнение. Главное, чтобы можно было собрать и запустить - code::blocks для этого вполне годится. А в случае конкретных просьб от пользователей можно и расшириться в количестве IDE.
а по существу только 2: DEB (Drbian, Ubuntu, Mint, antiX, и др.) и RPM (линия RedHat - Fedora, CentOS, Scientific и др.).
И вот это очень радует, что каждый Linux не стал "городить огород" с собственным пакетом. Два варианта - это вполне решаемо. Хотя... я бы предпочел один, учитывая, что результат всё равно один и тот же.
Olej писал(а):
13 фев 2021, 01:23
Так не бывает
Как раз так всё и делается :-). Иначе вы не разработчик, а торгаш, который просто нанимает батраков и присваивает добавочную стоимость. В таком случае совершенно не важно, создавать ли софт или торговать носками, ибо цель - просто прибыль.
Как будет формулировка и что-то получаться - показывайте сюда?
ОК :-)

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей