Подтвердить что ты не робот

Как настроить gtk на Visual Studio 2010

Я попытался настроить gtk + на visual studio, но не работает должным образом. Может ли кто-нибудь предложить мне правильное решение, как установить gtk на Visual Studio 2010

4b9b3361

Ответ 1

У меня GTK + работает с VS2010, поэтому, если вы хотите, чтобы он тоже работал, приготовьтесь к некоторой забаве, потому что это займет несколько минут.

Прежде всего, загрузите последнюю версию Пакет Windows All-In-One. Дополнительная ссылка для прямой загрузки для пакета GTK 2.24, в котором я использовал здесь. Прямая ссылка на 32-битную версию. Я не тестировал 64-битную версию, потому что она все еще указана как экспериментальная.

Как только у вас загружен пакет, распакуйте его в нечто вроде C:\gtk или в моем случае D:\gtk

Далее мы создадим переменную System Environment для папки GTK. Откройте командную строку и напишите: setx GTKDIR {Path to your GTK folder} /m, которая в моем случае будет setx GTKDIR D:\gtk /m

Мы также собираемся добавить файлы .dll, необходимые для встроенных приложений GTK + для работы в Windows в нашей системе PATH. Чтобы все было очень просто, я предлагаю вам отредактировать систему PATH с помощью PathEditor. Теперь добавьте путь к папке двоичных файлов GDK, которая в моем случае D:\gtk\bin для системы PATH. Убедитесь, что папка GTK bin добавлена ​​в PATH, введя PATH в командной строке.

Теперь перейдем к Visual Studio 2010 и создадим новый проект.

File
  ->New
    ->Project
    Visual C++
      ->Win32
        ->Win32 Console Application

Появляется мастер приложений.

Нажмите, чтобы выбрать:

Windows Application

Empty Project

Нажмите "Готово", чтобы продолжить.

Прежде чем добавлять исходные файлы, щелкните правой кнопкой мыши имя проекта в Обозреватель решений и выберите Свойства. Теперь перейдите в Свойства конфигурации, а затем Каталоги VС++. Теперь нам нужно добавить файлы include и library из GTK в директории Include Directories и Библиотеки.

В Include Directories

должно быть указано следующее:
$(GTKDIR)\lib\gtk-2.0\include
$(GTKDIR)\lib\glib-2.0\include
$(GTKDIR)\include

и Библиотечные каталоги:

$(GTKDIR)\lib

Пока мы все еще находимся в виду свойств проекта, нажмите Linker, а затем Система. Найдите SubSystem справа и щелкните раскрывающийся список. Выберите Windows/SUBSYSTEM: WINDOWS

Далее, мы должны сгенерировать флаги для компилятора и компоновщика. К счастью, GTK + поставляется с небольшим небольшим инструментом под названием pkg-config, который мы будем использовать для автоматического создания этих флагов для нас. Инструмент pkg-config можно найти в папке bin GTK. В моем случае это D:\gtk\bin или % GTKDIR%\bin, используя нашу системную переменную, которую мы определили ранее. Просто перейдите к папке bin (создаваемые текстовые файлы будут выводиться там) с помощью командной строки и выполните следующее:

pkg-config --cflags gtk+-2.0 --msvc-syntax > compilerflags.txt

Это создаст необходимые нам флаги компилятора и сохранит их в текстовом файле. Мой результат для флагов компилятора (я удалил флаг -mms-bitfields, это только флаг gcc, который нам не нужен):

-ID:/gtk/include/gtk-2.0 -ID:/gtk/lib/gtk-2.0/include -ID:/gtk/include/atk-1.0 -ID:/gtk/include/cairo -ID:/gtk/include/gdk-pixbuf-2.0 -ID:/gtk/include/pango-1.0 -ID:/gtk/include/glib-2.0 -ID:/gtk/lib/glib-2.0/include -ID:/gtk/include -ID:/gtk/include/freetype2 -ID:/gtk/include/libpng14

Мы будем делать то же самое для флагов компоновщика:

pkg-config --libs gtk+-2.0 --msvc-syntax > linkerflags.txt

Мой результат для флагов компоновщика:

/libpath:D:/gtk/lib gtk-win32-2.0.lib gdk-win32-2.0.lib atk-1.0.lib gio-2.0.lib pangowin32-1.0.lib gdi32.lib pangocairo-1.0.lib gdk_pixbuf-2.0.lib pango-1.0.lib cairo.lib gobject-2.0.lib gmodule-2.0.lib gthread-2.0.lib glib-2.0.lib intl.lib

При создании всех необходимых флагов нам нужно добавить их в наш проект. Еще раз щелкните правой кнопкой мыши имя проекта и нажмите Свойства. Теперь перейдите к C/C++ и нажмите Command Line. Справа вы увидите пустое поле с именем Дополнительные параметры. Скопируйте и вставьте содержимое compilerflags.txt в это поле.

Закончив описанное выше, нажмите Linker, а затем Командная строка. Еще раз просто скопируйте и вставьте содержимое файла linkerflags.txt в поле Дополнительные параметры. Пока мы здесь, добавим один последний флаг компоновщика /ENTRY: mainCRTStartup. Этот флаг сообщает Visual Studio, что мы хотим использовать стандартную main(), а не Microsoft _tmain() в качестве нашей основной точки входа в программу.

Наконец, в папке "Исходные файлы" создайте и добавьте новый .cpp файл со следующим:

#include <gtk-2.0\gtk\gtk.h>

int main(int argc, char* argv[])
{
    gtk_init(&argc, &argv);

    GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_widget_set_usize(window, 300, 200);

    g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);   
    gtk_window_set_title(GTK_WINDOW(window), "GTK+ with VS2010");

    gtk_widget_show(window);     

    gtk_main();   
    return 0;
}

Теперь все должно быть готово для компиляции, ссылки и запуска. Если все пойдет хорошо, вас следует приветствовать следующим образом: enter image description here

Хорошо, это было весело, правда?:)

Ответ 3

Если вы строите стек GTK + в Windows с помощью руководства, такого как this, тогда роскошь использования прекомпилированного двоичного файла не будет быть в вашем распоряжении.

В этом случае я бы предложил следующий подход.

  • Загрузите предварительно скомпилированные двоичные файлы. Это имеет два преимущества.

    • Это поставляется с утилитой pkg-config.exe, которую вы можете использовать для скомпилированного источника.
    • Это также содержит папку pkgconfig с большим количеством файлов .pc, которые могут быть адаптированы для скомпилированного источника.
  • Скомпилируйте пакеты в режиме отладки/выпуска, так что это главное преимущество его компиляции - и систематически упорядочивайте заголовки, библиотеки lib и dlls/exe в папке include, lib и bin соответственно.

  • Скопируйте папку pkgconfig из файла precompiled_gtk_source\bin в compiler_gtk_source\bin и задайте путь к переменной PKG_CONFIG_PATH для добавления compiler_gtk_source\bin\pkgconfig.

  • Теперь, учитывая тот факт, что имена библиотек, созданных при компиляции gtk самостоятельно и соответствующие имена библиотек в предварительно скомпилированном пакете, могут быть разными, вам, возможно, придется внести необходимые изменения в compiler_gtk_source\bin\pkgconfig *. файлов. Я бы предложил здесь подход сверху вниз (мы вскоре увидим преимущества). Сверху, я просто означает, что конечный продукт будет первым редактироваться.

    Например, в этом случае gtk + является конечным продуктом, и я поеду сначала сконфигурируйте .pc этого пакета. Процедура следующая:

    • Сначала посмотрите на имя созданной dll. В моем случае это gtk-3.0. Если файл .pc, который был отправлен с предварительно скомпилированными двоичными файлами, имеет другое имя, то измените имя соответствующим образом - в моем случае это gtk-3.0.pc. (Это должно быть в случае всех других .pc файлов.)
    • Откройте gtk-3.0.pc в текстовом редакторе, и вы увидите такие вещи, как показано ниже.

gtk-3.0.pc файл:

    prefix=c:/gtk_compilation/vs12/win32
    exec_prefix=${prefix}
    libdir=${exec_prefix}/lib
    includedir=${prefix}/include
    targets=win32

    Name: GTK+
    Description: GTK+ Graphical UI Library
    Version: 3.18.2
    Requires: gdk-3.0 atk-1.0 cairo cairo-gobject gdk_pixbuf-2.0 gio-2.0
    Requires.private: atk
    Libs: -L${libdir} -lgtk-3 
    Cflags: -I${includedir}/gtk-3.0 -mms-bitfields

Один из них - мой настроенный файл. Если вы не знаете, что делает каждая строка, вы можете посмотреть pkg-config help. Параметр Требование, однако, это требует особого упоминания. Это место, где вы зависимые DLL - снова убедитесь, что имя DLL точно соответствует тому, что у вас есть в папке bin.

  1. Нам нужно рекурсивно изменить файлы .pc для dll, которые включены после инструкции Требовать, и если какой-либо из них отсутствует или если существует несоответствие имени, вы можете сделать соответствующие изменения. К настоящему времени вы уже должны были понять преимущество подхода "сверху вниз". Это помогает нам систематически обрабатывать файлы зависимостей .pc, пока мы не разобраем их все. Теперь запустите команду ниже, чтобы убедиться, что все работает.

  2. Наконец, запустите команду pkg-config, как показано ниже:

    pkg-config --cflags gtk-3.0 --msvc-syntax > compilerflags.txt pkg-config --libs gtk+-2.0 --msvc-syntax > linkerflags.txt

Я просто перенаправил результаты в текстовый файл с именем compilerflags.txt и linkerflags.txt, чтобы вы могли использовать их в любое время, вырезав, скопировав и вставив. Конечно, вы должны сохранить только определенные для компилятора флаги.

Надеюсь, это когда-нибудь поможет кому-то.