А как по-нормальному установить GTK3 на Windows?
Вариант с msys это не здорово. Вот сделал я приложение на gtk (на .net), хочу чтобы можно было и в linux и в windows запускать. И честно говоря, предлагать тем, кто будет пользоваться им, инструкцию вида «скачайте msys2, там вбейте такую-то команду, добавьте путь в PATH, после чего вы сможете запустить мое кросплатформенное приложение» это не здорово.
собери dll-ки gtk+ и всех нужных либ, добавь их в архив/инсталлятор твоего приложения и никаких инструкций не надо.
А нету готового пакета?
Нужно было брать Qt.
Что-то не нахожу(
А потом еще все такие удивляются, а что это приложения на чисто виндовом WPF пишут, а не на таком хорошем и опенсорсном gtk. Потому что поставить gtk на винду это мозготрах. Почему нельзя было сделать виндовый msi для библиотеки и заголовочных файлов?
А вот и невероятно ценные советы подъехали. Старый добрый ЛОР.
Это действительно ценный совет, так как официальных сборок у gtk для windows нет.
Самое разумное написать авторам rawtherapee и darktable и попытаться выяснить у них, как они осуществляли сборку с gtk3 под виндоус. Остальные разработчики ряда софтину давно забили на портирование для виндоус из-за того, что из софтины используют gtk3.
Не благодари.
Кстати, на троечку так и не перешёл, разрабатываю под двойку. Со своими бурлениями подзабросил самого себя. =)
Он ж написал, что это не здорово.
А потом еще все такие удивляются, а что это приложения на чисто виндовом WPF пишут, а не на таком хорошем и опенсорсном
Qt for Python, например.
Потому что никто не пишет кроссплатформенные графические приложения на .NET, Microsoft это не интересно.
Gtk# разрабатывался в рамках Mono, кой сейчас в Microsoft. Конец немного предсказуем.
И зачем тогда пытаться ставить GTK+?
будь программистом. Собери и заапрувь на chocolatey.org
Почему нельзя было сделать виндовый msi для библиотеки и заголовочных файлов?
Потому, что гному плевать на винду (и мак). Ваш КО.
Готового инсталлятора «under Windows» нет.
GNOME Foundation занимается организацией конференций и хакфестов а также раздает зарплату временно избранной дирекции и сисадминам. Разработкой GNOME занимается сообщество, каждый участник которого действует абсолютно независимо в своей компетенции.
Я знаю что нет, поэтому gtk3 за пределами linux почти никому и не нужен.
А вот и невероятно ценные советы подъехали.
*делая вид, что не понимает сарказма*
Если б ТС выбрал Qt*, то его бы в начале треда сразу послали на https://qt.io/download и /thread
* Хотя скорее всего сего треда и не было бы вообще.
Счастливой оффлайн установки.
Хотя мне и фееричную онлайн установку mingw удалось наблюдать — человек полчаса на это потратил (не знаю почему), вместо того, чтобы просто скачать архив mingw-w64 и распаковать его.
Не то скинул. Сделать Windows инсталятор для простых людей можно изменив скрипты для gedit на Windows например:
Я CPack-ом копирую dll-ки из MSYS, CMakeLists.txt.
Сам MSYS ставлю отсюда http://www.msys2.org/ с pacman-ом.
Хз, есть ли способ проще.
Потому что WPF под mono нет и не планируется.
Тем не менее, в nuget gtk# таки добавили
Ну так под винду Visual Studio это фактически стандарт
Госпаде! Типичный лор. То «СТАВЬ КУЛЬТИ СТАВЬ КУЛЬТИ СТАВЬ КУЛЬТИ. 111!!», то «собирай генту GTK+».
Неужели никто не мог дать вот эту ссылку: https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer ? Там есть все и оно прописывается в PATH, можно сразу приступать к кодингу на C или C++. Питон через msys2 по инструкции gtk.org и собирать cx_Freeze.
Ну так под винду gtk+ далеко не стандарт.
А ты читал исходное сообщение ТС? Он знает об этом способе. Уж действительно типичный ЛОР.
На самом деле ему должны были посоветовать таскать собранные им либы со своим приложением в случае винды.
Ну так про установщик то он не знал. Его поставить — как .net Framework по сложности.
P.S. А вы думали, что у Qt какие-то нанотехнологии? точно так же либо линковать статически, либо копипастить
P.S.S. Зависимости в винду бы, зависимости.
Так потому и не дали ссылку, что далеко не все про нее в курсе.
На Windows я без vcpkg не обхожусь. Прекрасная штука, оно устанавливает либы из сорцов и поддерживается CMake и Visual Studio. GTK+3 там тоже есть.
А если ты свой софт распространяешь, то делай как все вендузятники, кидай либы в директорию с софтом.
Попробуй gtk из vcpkg
Чем бы это помогло?
Да сделай ты по-человечески, собери сам, делов-то.
Qt официально поддерживает винду. GTK+ — нет.
Почему нельзя было сделать виндовый msi для библиотеки и заголовочных файлов?
Потому что разработчики не заинтересованы в поддержке этой ОС
Хм. Когда то давно ставил Gajim на windows. Так там инсталятор предлагал установить gtk в систему.
просто добавь dll-ки и всё, нашёл проблему.
Можешь из msys2, можешь из vcpkg.
GTK+ нормально поддерживает винду, так как есть пакет в ихнем менеджере пакетов https://github.com/Microsoft/vcpkg , то для C++ можно считать почти официально(те же dll автоматом копируются при сборке)
А как по-нормальному установить GTK3 на Windows?
Вот сделал я приложение на gtk (на .net), хочу чтобы можно было и в linux и в windows запускать.
Вообще-то ты должен забандлить GTK+-либу и все сопутствующие в установщике для Windows. Так делает Inkscape и тот же GIMP. GTK+ не является системной библиотекой Windows.
И да, с Qt точно так же нужно будет тягать с собой все Qt-либы в дистрибутиве приложения. Или ты будешь рассматривать вариант аля сходи на официальный сайт скачай 1ГБ этих хрустящих файлов? Вот то-то и оно.
А как насчет установить gtk в систему, если не установлена?
Это не Windows Way. И не macOS Way.
Системные либы в этих ОС это то, что предоставляет сама корпорация, а не какие-то там частные компании или ты.
Методы аля «положите эти библиотеки в system32 и будет вам счастье» уже давно прошли.
Хочешь распространять своё приложение для пользователя удобно? Делай как все: создавай инсталлятор (или portable-архив), который содержит все необходимые библиотеки необходимых версий для запуска твоего приложения. В винде/макоси действует принцип «поставил и работает», а не обновил библиотеку и всё к херам поломалось, потому что приложение было заточено только под определённую версию либы.
Исключением из этого разве что Java является. Да и то, куча приложений под Windows (и кстати Linux тоже) бандлят с собой весь JRE, а то и JDK.
Остальные разработчики ряда софтину давно забили на портирование для виндоус из-за того, что из софтины используют gtk3.
Можно ещё посмотреть Meld, Gajim. Там всё в скриптах. Для Гаджим даже портабельный вариант.
Так там инсталятор предлагал установить gtk в систему.
Рунтайм скорее всего. Это несколько другая штука, чем та, о которой вопрошает ТС.
Методы аля «положите эти библиотеки в system32 и будет вам счастье» уже давно прошли.
Ничего не прошло. Ты вправе использовать систему как считаешь возможным. Другой вопрос, что среднестатистический юзверь обленился и не хочет совершать простые движения.
посмотрел на биндинги GTK к разным языкам и похоже программисты на D, тоже не любят таскать либы с собой.
Установка платформы GTK # GTK# Platform Setup
Xamarin.Forms теперь имеет поддержку предварительной версии для приложений GTK #. Xamarin.Forms now has preview support for GTK# apps. GTK # — это графический набор средств пользовательского интерфейса, который связывает библиотеку GTK + и разнообразные библиотеки GNOME, что позволяет разрабатывать полностью собственные приложения GNOME Graphics с помощью Mono и .NET. GTK# is a graphical user interface toolkit that links the GTK+ toolkit and a variety of GNOME libraries, allowing the development of fully native GNOME graphics apps using Mono and .NET. В этой статье показано, как добавить проект GTK # в Xamarin.Forms решение. This article demonstrates how to add a GTK# project to a Xamarin.Forms solution.
Xamarin.Forms Поддержка GTK # предоставляется сообществом. Xamarin.Forms support for GTK# is provided by the community. Дополнительные сведения см. в разделе Xamarin.Forms поддержка платформ. For more information, see Xamarin.Forms Platform Support.
Прежде чем начать, создайте новое Xamarin.Forms решение или используйте существующее Xamarin.Forms решение, например гамеофлифе. Before you start, create a new Xamarin.Forms solution, or use an existing Xamarin.Forms solution, for example, GameOfLife.
Хотя в этой статье рассматривается добавление приложения GTK # в Xamarin.Forms решение в VS2017 и Visual Studio для Mac, его также можно выполнить в MonoDevelop для Linux. While this article focuses on adding a GTK# app to a Xamarin.Forms solution in VS2017 and Visual Studio for Mac, it can also be performed in MonoDevelop for Linux.
Добавление приложения GTK # Adding a GTK# App
GTK # для macOS и Linux устанавливаются как часть Mono. GTK# for macOS and Linux is installed as part of Mono. GTK # для .NET можно установить в Windows с помощью программы установки GTK #. GTK# for .NET can be installed on Windows with the GTK# Installer.
Выполните эти инструкции, чтобы добавить приложение GTK #, которое будет выполняться на рабочем столе Windows: Follow these instructions to add a GTK# app that will run on the Windows desktop:
В Visual Studio 2019 щелкните правой кнопкой мыши имя решения в Обозреватель решений и выберите Добавить > новый проект. . In Visual Studio 2019, right-click on the solution name in Solution Explorer and choose Add > New Project. .
В окне Новый проект слева выберите Visual C# и классический рабочий стол Windows. In the New Project window, at the left select Visual C# and Windows Classic Desktop. В списке типов проектов выберите Библиотека классов (платформа .NET Framework) и убедитесь, что в раскрывающемся списке » платформа » установлено минимум платформа .NET Framework 4,7. In the list of project types, choose Class Library (.NET Framework), and ensure that the Framework drop-down is set to a minimum of .NET Framework 4.7.
Введите имя проекта с расширением GTK , например гамеофлифе. GTK. Type a name for the project with a GTK extension, for example GameOfLife.GTK. Нажмите кнопку Обзор , выберите папку, содержащую проекты других платформ, и нажмите кнопку выбрать папку. Click the Browse button, select the folder containing the other platform projects, and press Select Folder. Проект GTK будет размещен в том же каталоге, что и другие проекты в решении. This will put the GTK project in the same directory as the other projects in the solution.
Нажмите кнопку ОК , чтобы создать проект. Press the OK button to create the project.
В Обозреватель решений щелкните правой кнопкой мыши новый проект GTK и выберите пункт Управление пакетами NuGet. In the Solution Explorer, right click the new GTK project and select Manage NuGet Packages. Перейдите на вкладку Обзор и выполните поиск Xamarin.Forms 3,0 или более. Select the Browse tab, and search for Xamarin.Forms 3.0 or greater.
Выберите пакет и нажмите кнопку » установить «. Select the package and click the Install button.
Теперь найдите Xamarin.Forms . Пакет Platform. GTK 3,0 или более поздней версии. Now search for the Xamarin.Forms.Platform.GTK 3.0 package or greater.
Выберите пакет и нажмите кнопку » установить «. Select the package and click the Install button.
В Обозреватель решений щелкните правой кнопкой мыши имя решения и выберите пункт Управление пакетами NuGet для решения. In the Solution Explorer, right-click the solution name and select Manage NuGet Packages for Solution. Выберите вкладку Обновление и Xamarin.Forms пакет. Select the Update tab and the Xamarin.Forms package. Выберите все проекты и обновите их до той же Xamarin.Forms версии, которая используется в проекте GTK. Select all the projects and update them to the same Xamarin.Forms version as used by the GTK project.
В Обозреватель решений щелкните правой кнопкой мыши ссылки в проекте GTK. In the Solution Explorer, right-click on References in the GTK project. В диалоговом окне Диспетчер ссылок выберите проекты слева и установите флажок рядом с .NET Standard или общим проектом: In the Reference Manager dialog, select Projects at the left, and check the checkbox adjacent to the .NET Standard or Shared project:
В диалоговом окне Диспетчер ссылок нажмите кнопку Обзор и перейдите в папку C:\Program Files (x86) \GtkSharp\2.12\lib и выберите atk-sharp.dll, gdk-sharp.dll, glade-sharp.dll, glib-sharp.dll, gtk-dotnet.dll и gtk-sharp.dll файлов. In the Reference Manager dialog, press the Browse button and browse to the C:\Program Files (x86)\GtkSharp\2.12\lib folder and select the atk-sharp.dll, gdk-sharp.dll, glade-sharp.dll, glib-sharp.dll, gtk-dotnet.dll, gtk-sharp.dll files.
Нажмите кнопку ОК , чтобы добавить ссылки. Press the OK button to add the references.
В проекте GTK переименуйте Class1.CS в Program.CS. In the GTK project, rename Class1.cs to Program.cs.
В проекте GTK измените файл Program.CS , чтобы он соответствовал следующему коду: In the GTK project, edit the Program.cs file so that it resembles the following code:
Этот код инициализирует GTK # и Xamarin.Forms создает окно приложения и запускает приложение. This code initializes GTK# and Xamarin.Forms, creates an application window, and runs the app.
В Обозреватель решений щелкните правой кнопкой мыши проект GTK и выберите пункт свойства. In the Solution Explorer, right click the GTK project and select Properties.
В окне Свойства перейдите на вкладку приложение и измените раскрывающийся список тип выходных данных на приложение Windows. In the Properties window, select the Application tab and change the Output type drop-down to Windows Application.
В Обозреватель решений щелкните правой кнопкой мыши проект GTK и выберите Назначить запускаемым проектом. In the Solution Explorer, right-click the GTK project and select Set as Startup Project. Нажмите клавишу F5, чтобы запустить программу с помощью отладчика Visual Studio на рабочем столе Windows: Press F5 to run the program with the Visual Studio debugger on the Windows desktop:
Выполните эти инструкции, чтобы добавить приложение GTK #, которое будет выполняться на рабочем столе Mac: Follow these instructions to add a GTK# app that will run on the Mac desktop:
В Visual Studio для Mac щелкните решение правой кнопкой мыши Xamarin.Forms и выберите Добавить > добавить новый проект. . In Visual Studio for Mac, right-click on the Xamarin.Forms solution and choose Add > Add New Project. .
В окне Новый проект выберите другие > проект .NET > GTK # 2,0 и нажмите кнопку Далее. In the New Project window choose Other > .NET > Gtk# 2.0 Project and press Next.
Введите имя проекта с расширением GTK , например гамеофлифе. GTK, и нажмите кнопку создать. Type a name for the project with a GTK extension, for example GameOfLife.GTK, and press Create.
В панель решения щелкните правой кнопкой мыши пакеты > добавить пакеты. для проекта GTK и добавьте Xamarin.Forms пакет NuGet предварительной версии 3,0 или выше. In the Solution Pad, right-click on Packages > Add Packages. for the GTK project, and add the Xamarin.Forms 3.0 pre-release NuGet package or greater.
В панель решения щелкните правой кнопкой мыши пакеты > добавить пакеты. для проекта GTK и добавьте Xamarin.Forms . Platform. GTK 3,0 предварительный выпуск пакета NuGet или более поздней версии. In the Solution Pad, right-click on Packages > Add Packages. for the GTK project, and add the Xamarin.Forms.Platform.GTK 3.0 pre-release NuGet package or greater.
Обновите другие проекты платформы для использования той же Xamarin.Forms версии, которая используется в проекте GTK. Update the other platform projects to use the same Xamarin.Forms version as used by the GTK project.
В панель решения щелкните правой кнопкой мыши ссылки > изменить ссылки. для проекта GTK и добавьте ссылку на Xamarin.Forms проект (либо в .NET Standard, либо в общий проект). In the Solution Pad, right-click on References > Edit References. for the GTK project, and add a reference to the Xamarin.Forms project (either .NET Standard or Shared Project).
Измените файл Program.CS проекта GTK, чтобы он соответствовал следующему коду: Edit the Program.cs file of the GTK project so that it resembles the following code:
Этот код инициализирует GTK # и Xamarin.Forms создает окно приложения и запускает приложение. This code initializes GTK# and Xamarin.Forms, creates an application window, and runs the app.
В панель решения щелкните правой кнопкой мыши проект GTK и выберите Назначить запускаемым проектом. In the Solution Pad, right-click the GTK project and select Set as Startup Project.
На панели инструментов Visual Studio для Mac нажмите кнопку Пуск (треугольная кнопка, напоминающая кнопку воспроизведения), чтобы запустить приложение. In the Visual Studio for Mac toolbar, press the Start button (the triangular button that resembles a Play button) to launch the app.
Next Steps Next Steps
Особенности платформы Platform Specifics
Вы можете определить, на какой платформе Xamarin.Forms выполняется приложение, с помощью XAML или кода. You can determine what platform your Xamarin.Forms application is running on from either XAML or code. Это позволяет изменять характеристики программы при выполнении в GTK #. This allows you to change program characteristics when it’s running on GTK#. В коде Сравните значение Device.RuntimePlatform с Device.GTK константой (которая равна строке «GTK»). In code, compare the value of Device.RuntimePlatform with the Device.GTK constant (which equals the string «GTK»). При наличии совпадения приложение будет выполняться в GTK #. If there’s a match, the application is running on GTK#.
В XAML можно использовать OnPlatform тег для выбора значения свойства, характерного для платформы: In XAML, you can use the OnPlatform tag to select a property value specific to the platform:
Значок приложения Application Icon
Значок приложения можно задать при запуске: You can set the app icon at startup:
Темы Themes
Для GTK # доступны разнообразные темы, которые можно использовать из Xamarin.Forms приложения: There are a wide variety of themes available for GTK#, and they can be used from a Xamarin.Forms app:
Собственные формы Native Forms
Собственные формы позволяют Xamarin.Forms ContentPage использовать производные страницы в собственных проектах, включая проекты GTK #. Native Forms allows Xamarin.Forms ContentPage -derived pages to be consumed by native projects, including GTK# projects. Это можно сделать путем создания экземпляра страницы, производной от класса, ContentPage и преобразования ее в собственный тип GTK # с помощью CreateContainer метода расширения: This can be accomplished by creating an instance of the ContentPage -derived page and converting it to the native GTK# type using the CreateContainer extension method:
Дополнительные сведения о собственных формах см. в разделе собственные формы. For more information about Native Forms, see Native Forms.
Проблемы Issues
Это предварительная версия, поэтому следует рассчитывать на то, что все готово к производству. This is a Preview, so you should expect that not everything is production ready. Сведения о текущем состоянии реализации см. в разделе состояние, а сведения о текущих известных проблемах см. в разделе ожидающие & известные проблемы. For the current implementation status, see Status, and for the current known issues, see Pending & Known Issues.