无法为MacOSX编译wxWidget应用程序

时间:2011-12-30 01:28:51

标签: macos wxwidgets

我正在尝试使用wxWidgets 2.9.3编译WxWidgets的应用程序。我在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 个答案:

答案 0 :(得分:7)

不久前,我在Snow Leopard上使用以下配置设置为OSX构建wxWidgets:

../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尝试使用corebase之类的标记保存后,所有OSX框架都将添加到您的编辑中。

这是一个简单的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)/