Кроссплатформенный UI в 2018?

Модератор: Модераторы разделов

Ответить
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Кроссплатформенный UI в 2018?

Сообщение azsx »

На чём написать не большое десктоп приложение, чтобы UI был и работало в linux и windows?
На чём Вы лично такие приложения пишите?
зы
сам пробовал fpc, java, Qt, js.
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3669
ОС: Mandriva => Gentoo (~amd64)
Контактная информация:

Re: Кроссплатформенный UI в 2018?

Сообщение devilr »

Qt.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: Кроссплатформенный UI в 2018?

Сообщение Vascom »

Пиши на Qt.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Кроссплатформенный UI в 2018?

Сообщение Hephaestus »

Смотря, какой UI.
Я например, поддерживаю старый проектик (игрушка), там используется SDL.
При этом оно работает в Linux (как в консоли, так и в иксах) и в Windows. С поддержкой мыши, разумеется.
Так что UI бывают всякие.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Кроссплатформенный UI в 2018?

Сообщение serzh-z »

Вот на прошлой неделе писал их на GTK+, сегодня, за обедом, напишу парочку на Electron, а с завтрашнего дня всю неделю буду писать на QT. Ну разве только в субботу - на кошерном UWP. По субботам GTK+ низя.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2657
ОС: Gentoo

Re: Кроссплатформенный UI в 2018?

Сообщение ormorph »

А собирать UI под windows или под linux для винды?
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2657
ОС: Gentoo

Re: Кроссплатформенный UI в 2018?

Сообщение ormorph »

Если собирать из под linux для винды то:
Для чего то посложнее QT, так как много чего включает в себя но и собрать библиотеку сложнее.
Для чего то простого хватит и wxwigets, для Linux это wxGTK, для windows это wxMSW.
Для Linux wxWidgets собрать довольно просто, для этого нужен только установленный компилятор Mingw. Для Gentoo компилятор собирается довольно просто тыц. Только для 32 битной версии компилятор нужно выбрать немного постарее, чем тот который идет по умолчанию, так как поломали что то для запуска динамически скомпилированных программ, например добавив для crossdev опцию --gcc 4.9.4.
Собирается довольно просто динамическая версия wxMSW:
Spoiler
CXX="i686-mingw32-c++" CC="i686-mingw32-gcc" ../configure --build=x86-winnt-mingw32 --host="i686-mingw32" --prefix=$HOME/program/mingw-sr/wxMSW
Для сборки статической версии нужно добавить параметр --disable-shared.
Данный пример тыц собирается без переделки, незначительно отличается только Makefile:
Для linux:
Spoiler

Код: Выделить всё

CXX=g++
CXXFLAGS = `wx-config --cxxflags`
LDFLAGS = `wx-config --libs`

all: Shape.o Board.o Tetris.o main.o
	$(CXX) -o tetris main.o Shape.o Board.o Tetris.o $(CXXFLAGS) $(LDFLAGS)

Shape.o: Shape.cpp Shape.h
	$(CXX) -c Shape.cpp Shape.h $(CXXFLAGS)

Board.o: Board.cpp Board.h
	$(CXX) -c Board.cpp Board.h Shape.h $(CXXFLAGS)

Tetris.o: Tetris.cpp Tetris.h
	$(CXX) -c Tetris.cpp Tetris.h $(CXXFLAGS)

main.o: main.cpp main.h
	$(CXX) -c main.cpp main.h $(CXXFLAGS)

clean:
        rm -f *.o *.gch tetris
Для Windows динамическая версия:
Spoiler

Код: Выделить всё

CXX=i686-mingw32-g++
CXXFLAGS = `wx-config --cxxflags`
LDFLAGS = `wx-config --libs`

all: Shape.o Board.o Tetris.o main.o
	$(CXX) -o tetris.exe main.o Shape.o Board.o Tetris.o $(CXXFLAGS) $(LDFLAGS) -static-libgcc -static-libstdc++

Shape.o: Shape.cpp Shape.h
	$(CXX) -c Shape.cpp Shape.h $(CXXFLAGS)

Board.o: Board.cpp Board.h
	$(CXX) -c Board.cpp Board.h Shape.h $(CXXFLAGS)

Tetris.o: Tetris.cpp Tetris.h
	$(CXX) -c Tetris.cpp Tetris.h $(CXXFLAGS)

main.o: main.cpp main.h
	$(CXX) -c main.cpp main.h $(CXXFLAGS)

clean:
	rm -f *.o *.gch tetris.exe
Конечно для сборки под винду останется только указать путь для файла wx-config, что бы выполнялся тот который соответствует сборке для винды:
export PATH=$HOME/program/mingw-sr/wxMSW/bin:$PATH
Для статической сборки нужа будет статическая сборка wxwidgets и добавлен для gcc ключ -static.
Есть конечно много чего, что будет собираться только для windows или только для Linux. Например скринсейвер написанный для винды, но собрать его под linux не составит труда.
Последний раз редактировалось Bizdelnick 11.12.2018 14:03, всего редактировалось 1 раз.
Причина: тег [code], пробелы → табы
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Кроссплатформенный UI в 2018?

Сообщение azsx »

Просто отмечу. В lazarus кросскомпиляцию настроить можно, но на практике лучше поставить виртуальную машину и компилировать на винде и nix отдельно.
Много сбоев, совсем нет отладки.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2657
ОС: Gentoo

Re: Кроссплатформенный UI в 2018?

Сообщение ormorph »

azsx писал(а):
11.12.2018 09:40
Много сбоев, совсем нет отладки.
Ну для отладки да, лучше использовать каждую среду отдельно, если есть специфичные для каждой ос строчки кода.
А так есть еще расширения wxwidgets тыц.
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Кроссплатформенный UI в 2018?

Сообщение azsx »

ormorph писал(а):
11.12.2018 11:29
Ну для отладки да, лучше использовать каждую среду отдельно
Это не относится к java. Там заработает везде.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2657
ОС: Gentoo

Re: Кроссплатформенный UI в 2018?

Сообщение ormorph »

В принципе собранное под wxMSW нормально отлаживается и запускается под вайном:
Для этого можно установить гуй для gdb - Affinic Debugger, gdb можно взять тут, и после установки прописать в Affinic Debugger. После этого можно отлаживать в граф интерфейсе.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2657
ОС: Gentoo

Re: Кроссплатформенный UI в 2018?

Сообщение ormorph »

azsx писал(а):
11.12.2018 12:13
Это не относится к java. Там заработает везде.

Есть основанный на java, язык для быстрого прототипирования Processing, домашняя страница тыц.
Подкинул ебилд для установки в Gentoo тыц.
На счет зависимостей не знаю, у меня работает в Gentoo, вроде все либы в идут комплекте.
Когда то оно послужило примером для создания среды Arduino, от сюда и схожесть интерфейсов, там есть примеры в комплекте.
Спасибо сказали:
Ответить