无法为 MacOSX 编译 wxWidget 应用程序

发布于 2024-12-23 18:50:33 字数 341 浏览 0 评论 0原文

我正在尝试使用 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

I am trying to compile an application for WxWidgets using wxWidgets 2.9.3. I compiled the same source under Linux pretty fine and I think the main error is :

#error "Carbon does not support 64bit"

and I did not get how to set this correctly.
to compile I used the follow command:

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

Could someone help me on this?
/opt/bin is where my wxWidget is installed. My OSX is version 10.6.8

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

生来就爱笑 2024-12-30 18:50:33

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

../configure --with-cocoa --with-macosx-version-min=10.6 --enable-unicode --disable-共享 --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 
lt; $(SUFFIX)
   $(CC) $(CFLAGS) -c 
lt; -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)/

A while ago on Snow Leopard I used the following configuration settings to build wxWidgets for OSX:

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

The important options are --with-cocoaand --enable-universal-binaries to make it work under 64bit OSX.

After this just do make to compile wxWidgets again.

Be aware there could be an older version of wxWidgets in /opt/bin/. Because of new wxWidget upgrades I prefer to put the compiled version of wxWidgets in my home folder to keep an eye on all files. If you install it in your system paths you might lose the overview. Now it could happen you're not using the wx-config version you wanted to use.

To compile your own wxWidget apps I recommend to create your own Makefile.
Your compiling command looks already good, but let me give you an advice. After --libs try using flags like core and base to keep save all OSX Frameworks will be added to your compilation.

Here a simple Makefile example you can use if you want to. It also creates an OSX executable.

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 
lt; $(SUFFIX)
   $(CC) $(CFLAGS) -c 
lt; -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)/
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文