Вопрос новичка: GTK # (Mono) на OSX

Я делаю свои первые шаги (или, возможно, мои последние шаги) в GTK # на Mono для OSX. Я пишу файл .cs, а затем пытаюсь скомпилировать его с помощью моно:

gmcs -pkg:gtk-sharp-2.0 one.cs

это приводит к этому сообщению

error CS8027: Couldn't run pkg-config: ApplicationName='pkg-config', CommandLine='--libs gtk-sharp-2.0', CurrentDirectory=''

Что, по-видимому, потребовало бы от меня знания того, что я делаю. Я знаю это

Установщик Mono для MacOS X поставляется с Gtk + и Gtk #, поэтому вы можете начать создавать и запускать кроссплатформенные приложения Gtk # с графическим интерфейсом пользователя, которые включают OSX ».

Так что устанавливать нечего.

Я нашел здесь GTK2

/opt/local/var/macports/sources/rsync.macports.org/release/ports/x11/gtk2/

который определенно был установлен установкой Mono.

Версия GMCS - 2.4.2.2.

Изменить: Мигель говорит, что на моем пути есть что-то странное.

Я удалил все Macports, следуя инструкциям Macports. Я переустановил Mono из .dmg. Вот мой текущий путь

export PATH=/opt/subversion:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin

но даже если использовать только / usr / bin, ошибки все равно не избежать.

ВСЕ материалы Mono там, где они должны быть, включая все материалы в /Library/Frameworks/Mono.framework/Versions/Current. ОДНАКО: как ни странно

/Library/Frameworks/Mono.framework/Versions/2.4.2.2/lib/gtk-sharp-2.0/ 

пусто. Но MonoDevelop работает, но не знает о Gtk (я включил все ссылки, о которых он знает) ...


person Dan Rosenstark    schedule 02.08.2009    source источник


Ответы (3)


Быстрое и грязное решение:

cd /usr/local/bin
sudo ln -s /Library/Frameworks/Mono.framework/Commands/pkg-config ./pkg-config

Теперь ваша команда gmcs -pkg: ... будет работать.

Предыстория: я столкнулся с этой проблемой на новом Mac и новой установке Mono. Оставил меня чесать голову в течение нескольких дней, пока я внимательно не изучил сообщение об ошибке:

error CS8027: Couldn't run pkg-config: ApplicationName='pkg-config', CommandLine='--libs gtk-sharp-2.0', CurrentDirectory=''

Он говорит, что не может запустить программу, поэтому я сделал

which pkg-config

Это оказалось пустым, поэтому я подумал, что, вероятно, он не может запустить его, потому что он не был на пути. Так оно и оказалось.

person Yawar    schedule 19.12.2009
comment
Спасибо Явар. Я отмечу это как лучший ответ на данный момент, и в следующем месяце (это декабрь 2009 г.) я попробую это сделать и посмотрю, сработает ли он для меня. Проблема в том, что я не касался этого материала несколько месяцев (использовал чистые Winforms). Конечно выглядит правильно. - person Dan Rosenstark; 20.12.2009
comment
Другой (лучший?) Вариант - просто добавить каталог mono bin к вашему пути. export PATH=${PATH}:/Library/Frameworks/Mono.framework/Versions/Current/bin - person Cheeso; 21.04.2014
comment
@Cheeso - конечно, все должно работать нормально. Думаю, дело в предпочтениях. - person Yawar; 22.04.2014

У вас смешанная установка.

Gtk в / opt / local / var / macports не был получен из установщика Mono для OSX, вы, вероятно, получили его ранее из macports. Установщик Mono помещает свои файлы в /Library/Frameworks/Mono.framework/

Скорее всего, у вас есть что-то еще на вашем пути, поскольку он работает из коробки после того, как я установил Mono.Framework с веб-сайта Mono (с примером командной строки, который у вас есть выше).

person miguel.de.icaza    schedule 03.08.2009
comment
Спасибо, Мигель, я сообщу, если решу эту проблему или у меня возникнут другие вопросы. (+1 para vos, por supuesto) - person Dan Rosenstark; 03.08.2009
comment
Извините, вы имеете в виду путь как в echo $ PATH или ... на какие переменные среды мне следует смотреть? - person Dan Rosenstark; 03.08.2009
comment
Мигель, я снова отредактировал вопрос после ваших комментариев, если у вас будет возможность взглянуть на него. - person Dan Rosenstark; 04.08.2009

Использование MonoDevelop может упростить задачу, но вот как он ссылается на gtk # при компиляции (обратите внимание, что он ссылается на сборку прямо из GAC):

gmcs test.cs -r: /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/gac/gtk-sharp/2.12.0.0__35e10195dab3c99f/gtk-sharp.dll

Обычно вам также потребуется включить ссылки на gdk-sharp, pango-sharp и glib-sharp, кстати.

Обратите внимание на то, что версия фреймворка - «Текущая», что делает команду более ориентированной на будущее.

person Sandy    schedule 04.09.2009
comment
Спасибо за это, Сэнди, и удачи на SO. Я скоро проверю это, хотя кажется, что моя любимая стратегия Mono - ожидание - хороша, поскольку все идет вперед. - person Dan Rosenstark; 05.09.2009