Не могу скомпилировать приложение wxWidget для MacOSX - PullRequest
0 голосов
/ 30 декабря 2011

Я пытаюсь скомпилировать приложение для WxWidgets, используя wxWidgets 2.9.3. Я скомпилировал тот же самый источник под Linux довольно хорошо, и я думаю, что главная ошибка:

#error "Carbon does not support 64bit"

и я не понял, как правильно установить это. для компиляции я использовал следующую команду:

g++ hellomac.cpp -o hellomac `/opt/bin/wx-config --cxxflags --libs`

Может ли кто-нибудь помочь мне в этом? / opt / bin - это место, где установлен мой wxWidget. У меня OSX версии 10.6.8

1 Ответ

7 голосов
/ 30 декабря 2011

Некоторое время назад на Snow Leopard я использовал следующие параметры конфигурации для создания wxWidgets для OSX:

../configure --with-cocoa --with-macosx-version-min=10.6 --enable-unicode --disable-shared --enable-debug --enable-universal-binaries

Для этого важны следующие опции: --with-cocoa и --enable-universal-binariesработать под 64-битной OSX.

После этого просто выполните make для повторной компиляции wxWidgets.

Имейте в виду, что в /opt/bin/ может быть более старая версия wxWidgets.Из-за новых обновлений wxWidget я предпочитаю помещать скомпилированную версию wxWidgets в мою домашнюю папку, чтобы следить за всеми файлами.Если вы установите его в свои системные пути, вы можете потерять обзор.Теперь может случиться, что вы не используете версию wx-config, которую вы хотели использовать.

Для компиляции ваших собственных приложений wxWidget я рекомендую создать свой собственный Makefile.Ваша команда компиляции выглядит уже хорошо, но позвольте мне дать вам совет.После --libs попробуйте использовать флаги, такие как core и base для сохранения, все OSX Frameworks будут добавлены в вашу компиляцию.

Вот простой пример Makefile, который вы можете использовать, если хотите.Он также создает исполняемый файл OSX.

APP = $(shell basename $(shell pwd))

CC = g++

CFLAGS = -Wall `wx-config --cppflags`
LFLAGS = `wx-config --libs core,base`

BUIDIR = build
OBJDIR = obj
OSXDIR = osx
SRCDIR = src

SOURCES := $(wildcard $(SRCDIR)/*.cpp)
OBJECTS := $(patsubst $(SRCDIR)/%,%,$(patsubst %.cpp,%.o,$(SOURCES)))

NO_COLOR = \033[0m
O1_COLOR = \033[0;01m
O2_COLOR = \033[32;01m

PREFIX = "$(O2_COLOR)==>$(O1_COLOR)"
SUFFIX = "$(NO_COLOR)"


all: clean linking osx
   @echo $(PREFIX) Build finished $(SUFFIX)

clean:
   @echo $(PREFIX) Cleaning up $(SUFFIX)
   rm -rfv $(BUIDIR) $(OBJDIR)

$(BUIDIR)/:
   mkdir -p $@

$(OBJDIR)/:
   mkdir -p $@

%.o: $(SRCDIR)/%.cpp
   @echo $(PREFIX) Compiling $< $(SUFFIX)
   $(CC) $(CFLAGS) -c $< -o $(OBJDIR)/$@

linking: $(BUIDIR)/ $(OBJDIR)/ $(OBJECTS)
   @echo $(PREFIX) Linking $(SUFFIX)
   $(CC) $(CFLAGS) $(OBJDIR)/*.o -o $(BUIDIR)/$(APP) $(LFLAGS)

osx: $(BUIDIR)/$(APP) $(OSXDIR)/Info.plist
   @echo $(PREFIX) Creating Mac OS X executable file $(SUFFIX)
   -mkdir $(BUIDIR)/$(APP).app
   -mkdir $(BUIDIR)/$(APP).app/Contents
   -mkdir $(BUIDIR)/$(APP).app/Contents/MacOS
   -mkdir $(BUIDIR)/$(APP).app/Contents/Resources
   -mkdir $(BUIDIR)/$(APP).app/Contents/Resources/English.lproj
   cp $(OSXDIR)/Info.plist $(BUIDIR)/$(APP).app/Contents/
   @#cp $(OSXDIR)/version.plist $(APP).app/Contents/
   @#cp $(OSXDIR)/InfoPlist.strings $(APP).app/Contents/Resources/English.lproj/
   @#cp $(OSXDIR)/Icons.icns AnotherResource.txt $(APP).app/Contents/Resources/
   cp $(BUIDIR)/$(APP) $(BUIDIR)/$(APP).app/Contents/MacOS/$(APP)
   echo -n 'APPL????' > $(BUIDIR)/$(APP).app/Contents/PkgInfo

.PHONY: all clean linking osx
.SILENT: $(BUIDIR)/ $(OBJDIR)/
...