我正在尝试使用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
答案 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
尝试使用core
和base
之类的标记保存后,所有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)/