Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
msys2_mingw [2024/03/05 14:03] – [Пишем программы] adminmsys2_mingw [2024/03/19 19:25] (current) admin
Line 50: Line 50:
 под Windows-консоль. А вот хрен вам! Оказывается, теперь есть НЕ ОДИН компилятор, точнее не одна build-система (среда, namespace e.t.c.), а несколько. под Windows-консоль. А вот хрен вам! Оказывается, теперь есть НЕ ОДИН компилятор, точнее не одна build-система (среда, namespace e.t.c.), а несколько.
 Из них первая - для компиляции программ под __САМУ__ **MSYS2** (вы же помните, что она тащит за собой теперь как Из них первая - для компиляции программ под __САМУ__ **MSYS2** (вы же помните, что она тащит за собой теперь как
-минимум DLL ''msys-2.0.dll'' и работает с UNIX-путями), а остальные build-системы - для обычных "голых" Windows программ,+минимум DLL ''msys-2.0.dll'' и работает с UNIX-путями?), а остальные build-системы - для обычных "голых" Windows программ,
 как в старом добром **Mingw**. Компилятор и там и там - знакомый **Mingw-w64**, но по-разному настроенный. Да, как в старом добром **Mingw**. Компилятор и там и там - знакомый **Mingw-w64**, но по-разному настроенный. Да,
 не забываем что всё это может существовать в 32-бит, 64-бит и все комбинации между ними! не забываем что всё это может существовать в 32-бит, 64-бит и все комбинации между ними!
Line 166: Line 166:
 Надо сказать, что современных реализаций библиотеки curses есть целых две. Одна из них - ncurses, другая - pdcurses. Давайте установим ncurses для нашей 32-битной сборки: ''pacman -S mingw-w64-i686-ncurses'' Надо сказать, что современных реализаций библиотеки curses есть целых две. Одна из них - ncurses, другая - pdcurses. Давайте установим ncurses для нашей 32-битной сборки: ''pacman -S mingw-w64-i686-ncurses''
  
-**ПРИМЕЧАНИЕ**: Как было написано выше, управление консолью в Windows устроено совсем иначе, чем в UNIX, так что не обходится без глюков. Библиотека ncurses реализована таким образом, что она "чувствует", под какой консолью она работает и включает "магию". Если мы запускаем одну и ту же прогрмамму под UNIX-подобной консолью, она начинает управлять экраном через ESC-последовательности, а если из CMD или PowerShell - через API Windows Console. Но фокус в том, что для ESC-последовательностей нужна база терминалов, а она не всегда доступна. Это дает неприятный результат: программа на ncurses неадекватно работает из "оболочки" **MSYS2 Mingw** в которой мы ее только что откомпилировали. А из обычных CMD или PowerShell работает нормально. Как это обойти ? Если нужна программа для среды **MSYS2** - скомпилируйте ее в оболочке **MSYS2 MSYS** с ее библиотеками, а если "чистая виндовая" - в среде **MSYS2 Mingw**.+**ПРИМЕЧАНИЕ**: Как было написано выше, управление консолью в Windows устроено совсем иначе, чем в UNIX, так что не обходится без глюков. Библиотека ncurses реализована таким образом, что она "чувствует", под какой консолью она работает и включает "магию". Если мы запускаем одну и ту же прогрмамму под UNIX-подобной консолью, она начинает управлять экраном через ESC-последовательности, а если из CMD или PowerShell - через API Windows Console. Но фокус в том, что для ESC-последовательностей нужна база терминалов, а она не всегда доступна. Это дает неприятный результат: программа на ncurses неадекватно работает из "оболочки" **MSYS2 Mingw64** в которой мы ее только что откомпилировали. А из обычных CMD или PowerShell работает нормально. Как это обойти ? Если нужна программа для среды **MSYS2** - скомпилируйте ее в оболочке **MSYS2 MSYS** с ее библиотеками, а если "чистая виндовая" - в среде **MSYS2 Mingw64**.
  
 Давайте создадим простую ncurses программу для Windows (конечно же статическую): Давайте создадим простую ncurses программу для Windows (конечно же статическую):
Line 289: Line 289:
 Это неудивительно, так как полученная программа требует для своей работы ''SDL2.DLL'', Это неудивительно, так как полученная программа требует для своей работы ''SDL2.DLL'',
 а она пока доступна только "изнутри" среды **MSYS2**. Можно пойти двумя путями: первый - установить а она пока доступна только "изнутри" среды **MSYS2**. Можно пойти двумя путями: первый - установить
-''SDL2.DLL'' "в систему", второй: просто положить ''SDL2.DLL'' в каталог с программой. Тогда за+''SDL2.DLL'' "в систему" (в C:\Windows\System32), второй: просто положить ''SDL2.DLL'' в каталог с программой. Тогда за
 счет известной особенности Windows "use local DLL" программа при запуске найдет нужную счет известной особенности Windows "use local DLL" программа при запуске найдет нужную
 DLL и подключит. Скачаем нужный runtime (например 32-битный) на сайте DLL и подключит. Скачаем нужный runtime (например 32-битный) на сайте
Line 354: Line 354:
  
 Наконец, существует возможность - использовать уже знакомую нам SDL2 для "склейки" операционной Наконец, существует возможность - использовать уже знакомую нам SDL2 для "склейки" операционной
-системы и OpenGL. Это намного удобнее т.к. в SDL2 имеются функции ввода, управления+системы и OpenGL вместо GLU или GLUT. Это намного удобнее т.к. в SDL2 имеются функции ввода, управления
 манипуляторами, звуком, сетью и т.д. и самое главное - обе библиотеки кросс-платформенные. манипуляторами, звуком, сетью и т.д. и самое главное - обе библиотеки кросс-платформенные.
  
Line 362: Line 362:
  
 https://ps-group.github.io/opengl/lesson_1 https://ps-group.github.io/opengl/lesson_1
 +
 +==== QT ====
 +
 +Еще одна популярная кроссплатформанная библиотека.
 +
 +Среди пакетов MSYS2 имеется IDE QtCreator
 +
 +Параграф не написан.
 +
 +https://wiki.qt.io/MSYS2
 +
  
 ==== Интеграция MSYS2 и VSCode ==== ==== Интеграция MSYS2 и VSCode ====
Navigation