如何为iPhone和iPhone模拟器编译C++0x代码

发布于 2024-10-14 07:16:25 字数 665 浏览 1 评论 0 原文

我们有一个使用 OpenGL 用 C++ 编写的蛋白质可视化数学/科学应用程序。它是在过去几年编写的,广泛使用了 GCC 4.4 及更高版本中的 C++0x 功能。 (它还可以在 Windows 上使用 Microsoft Visual C++ 10 进行编译,支持许多 C++0x 功能。)

我们想要发布 iPhone/iPad 版本,因此需要将其从 Linux/Windows 移植到 iPhone。我们毫不费力地移植了类似的程序——添加一些 Objective C 文件,就完成了!——但是,由于这里使用的 C++0x 功能,我们遇到了问题。 OS X 上的 Xcode 使用 GCC 4.2.1(从 2007 年开始),该版本早于 GCC 的 C++0x 支持。重写所有这些漂亮的 C++ 0x 代码而不使用 C++0x 功能似乎是一个巨大的倒退,而且当迈向 C++0x 的进程已经明确时,我们真的不想维护向后移植的代码库。

有没有办法使用GCC 4.5(或4.6,来自SVN)来针对iPhone和iPhone模拟器?如果是这样,怎么办?最好是在 Xcode 中,因为单击并运行/单击并调试功能非常有用。如果能够在 Xcode 的“C/C++ 编译器版本”框中输入“GCC 4.6”并且一切正常,那就太好了。

(顺便说一句,Clang 的顶级版本——截至昨天!——支持一些 C++0x 功能,但尚不支持 lambda 表达式,因此我们现在可能无法使用它。 )

We have a mathematics/scientific application for protein visualization written in C++ using OpenGL. It was written over the last couple of years and makes extensive use of C++0x features found in GCC 4.4 and later. (It also compiles with Microsoft Visual C++ 10 on Windows, which supports many C++0x features.)

We want to release an iPhone/iPad version, so we need to port it from Linux/Windows to the iPhone. We've ported similar programs with very little effort--add a handful of Objective C files, and done!--however, due to the C++0x features used here we've got a problem. Xcode on OS X uses GCC 4.2.1 (from 2007) which predates GCC's C++0x support. It seems a huge step backwards to rewrite all this beautiful C++ 0x code to not use C++0x features, and we really don't want to maintain a backported codebase when the march towards C++0x is clear.

Is there any way to use GCC 4.5 (or 4.6, from SVN) to target the iPhone and iPhone simulator? If so, how? Preferably, from within Xcode, since the click-and-run/click-and-debug functionality is very useful. It'd be great to be able to enter "GCC 4.6" in the "C/C++ Compiler Version" box in Xcode and just have everything work.

(As an aside, the top-of-the-tree version of Clang--as of just yesterday!--supports some C++0x features, but doesn't yet support lambda expressions so it's probably out for us for now.)

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

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

发布评论

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

评论(1

挽袖吟 2024-10-21 07:16:25

我突然想到,在苹果正式支持之前,可能没有一种非常干净或简单的方法可以做到这一点。您可能已经知道这一点,但 Xcode 使用旧版本 GCC 的原因是 Apple 对 GNU 工具链进行了大量修改,并在 APSL 下发布了他们的版本(即 与 GPL 不兼容)。因此,在大多数情况下,您可以将他们的 GCC 版本视为一个完整的分支。我在尝试将 Apple 版本的工具链移植到 Linux 时遇到了这个问题。我取得了一些有限的成功,但这不是一项小任务......

Off the top of my head, I'm going to say there probably isn't a very clean or easy way to do this, until Apple officially supports it. You probably already know this, but the reason Xcode uses an older version of GCC is that Apple makes extensive modifications to the GNU toolchain, and releases their version under the APSL (which is incompatible with the GPL) . So for the most part, you can consider their version of GCC to be a complete fork. I ran into this problem when trying to port the Apple version of the toolchain to Linux. I'd had some limited success, but it is not a small undertaking...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文