Кросс-компиляция GTK на Fedora с использованием MinGW - PullRequest
2 голосов
/ 02 декабря 2011

У меня установлены Fedora (последняя версия), а также пакеты mingw32 и gtk.

Я написал простой Hello world:

#include <gtk/gtk.h>

int main(int argc, char* argv[]){
    GtkWidget *window;

    gtk_init(&argc, &argv);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_widget_show(window);

    gtk_main();

    return 0;
}

Я могу легко скомпилировать его в Fedora с помощью:

gcc -o hello hello.c 'pkg-config --libs --cflags gtkmm-3.0'

(здесь неправильные апострофы)

Я также пытался скомпилировать простую printf("Hello world"); программу (без gtk) для Windows с: i686-pg-mingw32-gcc simple.c -o simple.exe, и она прекрасно работала под Windows

Но я не могу кросс-компилировать для окон, использующих GTKmm (даже пример с другой версией GTK, было бы здорово). Я прочитал это http://camltastic.blogspot.com/2008/10/mingw-compile-software-for-windows.html, но он использует configure и make, которых у меня нет для моих программ.

Также есть много чего: http://ricardo.ecn.wfu.edu/~cottrell/cross-gtk/, но в нем говорится об установке mingw самостоятельно в пользовательскую папку и так далее ... но я установил mingw с помощью Fedora yum.

Обновление

Обновление после всех подсказок Родриго:

ДА! Мы сделали это! Работает. Сначала запускается консоль, но не важно. Я также не тестировал все библиотеки GTK, но думаю, что они также должны работать.

После года попыток у меня наконец-то все получилось, и я ближе всего к разработке приложений с графическим интерфейсом из когда-либо существовавших. Так что большое спасибо за ваше терпение и руководство. Я думаю, что теперь я также как-то понял, как все это работает (я имею в виду, скомпилированные библиотеки для разных ОС, pkg-config, переменные и т. Д.)

1 Ответ

1 голос
/ 03 декабря 2011

Вы установили mingw из репозиториев Fedora, но вам все еще нужны библиотеки GTK, скомпилированные для Windows.Вы можете скомпилировать их самостоятельно (не тривиально, но и не очень сложно), или вы можете скачать их в другом месте, как указано на цитируемой вами странице.

ОБНОВЛЕНИЕ: О ваших попытках в комментариях ниже:

Я исправил файлы pc, которые скопировал в / usr / lib / pkgconfig, и вот мой журнал: pastebin.com/KZr8tMQ0 Я действительно не понимаю.Когда я запускаю pkg-config, он пропускает gobject.Когда я запускаю его как root, он пропускает gdk.Когда я запускаю его с помощью gtkmm-3.0, он генерирует параметры ... когда я запускаю его с помощью gtkmm-2.4, происходит сбой, даже если gtkmm-2.4 является единственным файлом gtkmm pc, который у меня есть в папке, установленной в PKG_CONFIG_PATH.

  • У вас нет ни gtk-3.0, ни gtkmm-3.0 для Windows.Поэтому неудивительно, что в нем говорится: Пакет gtkmm-3.0 не найден в пути поиска pkg-config .Используйте pkg-config gtkmm-2.4.
  • У вас есть gtkmm-2.4 & friends для Windows, но вам не хватает gtk + -2.0 (нет файла gtk + -2.0.pc) и всех его зависимостей (pango, cairo, gdk, atk, glib)...).
  • Вы не должны запускать pkg-config или компилятор с помощью sudo.Sudo не передает большинство переменных среды по соображениям безопасности.Вот почему sudo pkg-config игнорирует вашу установку Windows.
  • Наконец, PKG_CONFIG_PATH предназначен для добавления дополнительных путей для поиска файлов .pc.Если все ваши файлы находятся в одном каталоге, достаточно установить PKG_CONFIG_LIBDIR, но вы неправильно его устанавливаете, он должен быть в каталоге lib/pkgconfig.
...