|
Модератор
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Установка SDL и её Haskell- обёрток17.05.2017, 03:35. Показов 5157. Ответов 25
Метки нет (Все метки)
Что такое SDL можно посмотреть в вики . Не скрою, что я публикую здесь описание установки SDL т.к. она требуется в сочиняемом мной GUI, который когда ни будь, надеюсь, опубликую.
Но описание установки SDL, я полагаю, следует дать отдельной темой. Может, кого она и без моего GUI заинтересует. Кликните здесь для просмотра всего текста
Здесь приводится установка на Windows, но windows-специфична часть где описывается установка сишных библиотек. Последующая установка Haskell-обёрток к ним, скорее всего, независима от ОС.
Что нужно установить: саму SDL как библиотеку на С, и к ней два довеска, тоже на С, - SDL2_image что бы можно было загружать картинки в большинстве распространённых графических файлов, и SDL2_ttf что бы можно было пользоваться шрифтами (Да, да. Сама SDL даже не поддерживает вывод текста). После установки сишных библиотек (в linux они, наверняка встают «как родные») нужно установить к каждой из трёх свою обёртку. С обёртками на Haskell хроническая невезуха. Даже эти обёртки (тоненькие, небольшие), и то уже несовместимы с последней версией SDL. Но, ничего – мы их починим. И так, я предполагаю, что мы пользуемся Windows и у нас уже установлен stack. Как его устанавливать я недавно рассказывал. Если у кого что то другое -я не виноват. Я не могу настраивать и описывать этот процесс под всё. Пока не создаём никакие Haskell проекты. Первым делом мы обновляем и доустанавливаем идущий со stack-ом (а может и с ghc) вариант Arch Linux под Windows который называется msys2 . С указанного сайта его ставить не нужно. Он уже стоит в обрезанном виде. Главное, уже установлен пакетный менеджер ArchLinux-а называющийся pacman. Правда его нет в PATH Windows (и не нужно для наших целей), зато он виден stack-у. Выполняем в консоли.
Теперь устанавливаем четыре пакета – вспомогательный и те самые три сишных библиотеки : SDL2 (SDL второй версии), SDL2_image и SDL2_ttf. Сделаем это двумя командами (хотя можно четырьмя или одной – приглядевшись к командам можно понять что я имею ввиду) Для 64-х разрядной Windows нужно установить
Основную забираем в исходниках с https://github.com/haskell-game/sdl2 . Кто то может скачать git – ом, но я здесь не буду описывать ещё и git. Кто им не пользуется, может просто скачать sdl2-master.zip (справа на страничке есть подходящая кнопочка). Для определённости, я распаковал этот архив в c:\Users\User\Samples\Haskell и получился каталог проекта c:\Users\User\Samples\Haskell\sdl2-master (git установит в каталог без суффикса -master). Заходим в каталог и редактируем файл sdl2.cabal. Его синтаксис похож на синтаксис Haskell тем, что уровни вложенности задаются отступами. Где ни будь, между строкой начинающейся на library и строкой начинающейся на executable нужно вставить
Дополнительная правка, на случай, если мы хотим откомпилировать примеры идущие с пакетом.
В подкаталоги examples\lazyfoo\ и examples\twinklebear\ нужно положить по файлу Paths_sdl2.hs с таким содержимым:
Примеры можно запускать так
Кстати, примеры переписаны с сишных и можно нагуглить соответствующие статьи с описаниями. Устанавливаем обёртки для двух оставшихся библиотек скачав их с https://github.com/carldong/sdl2-ttf и https://github.com/sbidin/sdl2-image.git . Впрочем, ой! Вторая ссылка не работает. Только что работала и вдруг. Таков он – мир Haskell обёрток! Ну, она или восстановится, или можно будет попробовать один из её клонов. В крайнем случае, архив у меня есть. И, так, в обеих обёртках, в их .cabal файлы нужно так же добавить
И ещё по одному изменению потребуется в stack.yaml. Дело в том, что эти пакеты, очевидно, зависят от основного sdl2, но он не в репозитории stackage, а у нас, в локальной директории. Ничего страшного, между строками stack.yaml
3
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 17.05.2017, 03:35 | |
|
Ответы с готовыми решениями:
25
Установка haskell и wxhaskell
Установка Darcs и Cabal в Haskell Platform |
|
275 / 50 / 2
Регистрация: 10.10.2017
Сообщений: 54
|
|
| 13.05.2018, 20:37 | |
|
Немного почитал https://github.com/commercialh... k/Setup.hs выяснилось, что есть опция `--skip-msys` (https://github.com/commercialh... issues/377). Пока не пробовал ее (насколько я понял с этой опцией будет использоваться ранее установленный msys2), пока открыл https://github.com/commercialh... ssues/4023 про обновление msys2 в дефолтном stack setup. Вроде надо прописать в stack.yaml
stack-options: - "--skip-msys" чтобы эта опция была активна по умолчанию. Добавлено через 6 часов 41 минуту Оказывается аналогичный https://github.com/commercialh... ssues/3146 висит уже больше года. Там кстати написано, как именно обновлять дефолтный msys2, чтобы обновилось, а именно stack exec -- pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime msys2-runtime-devel stack exec -- pacman -Syu stack exec -- pacman -Syuu
1
|
|
|
275 / 50 / 2
Регистрация: 10.10.2017
Сообщений: 54
|
|
| 28.05.2018, 13:08 | |
|
Ура в новом стеке будет новый msys2 https://github.com/fpco/stacka... 825a359511
1
|
|
|
275 / 50 / 2
Регистрация: 10.10.2017
Сообщений: 54
|
|
| 14.06.2018, 01:31 | |
|
Закоммитили новый msys2 20180531 в stackage-content, чтобы обновиться надо удалить директорию x86_64-windows куда stack-ом устанавливаются по умолчанию программы командой stack setup, затем собственно сделать stack update и stack setup и вуаля устанавливается новый msys2.
1
|
|
|
Модератор
|
||||||||||
| 17.06.2018, 18:28 [ТС] | ||||||||||
|
Попытаюсь, в очередной раз, описать актуальный, на момент публикации этого сообщения, способ установки stack + сишные библиотеки SDL2, SDL2_image, SDL2_ttf + Haskell-обёрток к ним.
Изменения основываются на советах hardentoo в последних сообщениях этой темы и являются их обобщением и результатом проверки. Надеюсь, актуальные способы установки будут тут публиковаться в дальнейшем (мной или кем то). Для любой ОС: если у вас стоит haskell platform – сносите её. Вам понадобится stack. Установка stack-а на linux не представляет проблем. Как и установка сишных библиотек SDL2, SDL2_image, SDL2_ttf. Пользователи linux могут не читать то, что под спойлером. Установка stack и сишных библиотек на Windows 7 – 10
Если у вас уже установлен stack, стоит посмотреть пути, по которым он установлен. Выполняем stack path и смотрим результат. Например, строку начинающуюся с «extra-include-dirs:»
У меня было
Цель – после переустановки получить каталог msys2-20180531 – актуальный на момент публикации этого сообщения (или новее). Т.е. пути будут вроде
Удаление стека
Удалите каталоги указанные в строках «stack-root:», «ghc-paths:» вывода команды stack path. Однако в «stack-root:» (по умолчанию c:\sr) имеется файл конфигурации config.yaml . Если вы его правили, перед временным удалением стека его лучше сохранить где то.
При удалении msys2-… могут быть предупреждения об опасности удаления системных файлов вроде stderr – удаляйте всё. Есть ещё каталог указанный в «local-bin:» и «local-bin-path:», по умолчанию C:\Users\User\AppData\Roaming\local\bin (выбирается во время инсталляции стека). В нём находятся исполняемые файлы – сам stack.exe и различные утилиты устанавливаемые из Haskell-пакетов, например, hlint. Я не стал удалять этот каталог. Утилиты можно переустановить потом. Установка стека
Скачать инсталятор стека можно по ссылке с https://haskell-lang.org/get-started/windows .
Если хочется установить stack в каталог отличный от c:\sr, то можно установить переменную окружения STACK_ROOT со значением желаемого каталога. (Примечание: hardentoo предпочитает, кроме использования переменной окружения STACK_ROOT, подменить все пути которым пользуется stack, см. Часть 2. Установка stack. Пункты 3-6). Во время установки ставим галочки Add to user %PATH% и set %STACK_ROOT% to recommended default (если не установили STACK_ROOT ранее сами). После инсталляции выполняем
Установка Haskell-обёрток. К счастью, с момента начала этой темы произошли существенные улучшения. Пакеты со stackage.org sdl2 и sdl2-ttf устанавливаются и под windows, и только sdl2-image пока ещё «кривой» на stackage. Его загрузку под windows придётся или выполнять вручную с https://github.com/e45lee/sdl2-image (и указывать в разделе packages: файла stack.yaml проекта), или прописать в этом же файле раздел «extra-deps:»
Примечание: "commit:" должен быть с отступом, под "git:". Под linux никакие внешние зависимости прописывать в stack.yaml не нужно.
1
|
||||||||||
|
Модератор
|
|||||||||||||||||||||||||||||||||||||
| 19.07.2020, 15:05 [ТС] | |||||||||||||||||||||||||||||||||||||
|
Свежие инструкции по установка SDL2 и её Haskell- обёрток.
Только что проделывал, правда только под Win 10 x64. В инструкции, по прежнему, используются советы hardentoo. Общее замечание по использованию консоли. Консоль запускать из самой винды командой cmd (или с помощью ярлыка), но не из файловых менеджеров вроде totalcommander/freecommander/multicommander - у них остаётся старое окружение (PATH и пр.), так что если хочется через них, то закрывайте их предварительно и открывайте снова. Описываемые далее действия меняют переменные окружения. cmd запускаем всегда не под админом. Устанавливаем stack
Скачать инсталятор стека можно по ссылке с https://haskell-lang.org/get-started/windows .
Если хочется установить stack в каталог отличный от c:\sr, то можно установить переменную окружения STACK_ROOT со значением желаемого каталога. Во время установки ставим галочки Add to user %PATH% и set %STACK_ROOT% to recommended default (если не установили STACK_ROOT ранее сами). После инсталляции запускаем cmd и выполняем
).Обновляем msys32
msys32 ставиться вместе со стеком, в каталог вроде
C:\Users\User\AppData\Local\Programs\sta ck\x86_64-windows\msys2-20180531 Где User может быть именем вашего юзера (уже существующая ветка), 20180531 дата устанавливаемого msys2 Его лучше обновить выполнив из новой консоли
Закрыть консоль. Пофиксить инсталляцию компилятора
Скопировать zlib1.dll из
C:\Users\User\AppData\Local\Programs\sta ck\x86_64-windows\msys2-20180531\mingw64\bin (для 32х разрядной win, наверно из ...\mingw32\bin) в C:\Users\User\AppData\Local\Programs\sta ck\x86_64-windows\ghc-8.8.3\mingw\bin Где User может быть именем вашего юзера (уже существующая ветка), ghc-8.8.3 - текущая версия компилятора. Установить git
... ну, вдруг не устанавливали. Я пользуюсь github-ом и, по этому, https://desktop.github.com/ Можно отдельно https://git-scm.com/download/win после установки и открытия новой консоли git должен быть уже доступен, проверьте
Установить сишные библиотеки SDL2
Для 64-х разрядной Windows
Что же до haskell-обёрток, то пакеты sdl2 и sdl2-ttf со https://www.stackage.org работают и под win, нужно только указывать их в dependencies проектов, а вот sdl2-image уже много лет не хотят фиксить для винды. По этому, в файле stack.yaml проекта, в разделе «extra-deps:» прописываем
0
|
|||||||||||||||||||||||||||||||||||||
| 19.07.2020, 15:05 | |
|
Правильная установка Haskell. Утилита Stack Место ФП и Haskell в компьютерной индустрии (Для чего он нужен, этот Haskell?) Установка SDL 2 SDL: OpenGL: установка границ объема отсечения glOrtho(.); Как вывести текст на экран, используя библиотеку SDL TTF для SDL 2? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|