c++ - 将 C++ 代码移植到 MacOS 有哪些建议?

标签 c++ macos g++ portability

<分区>

对于即将进行的项目,计划将在 Windows 和 Linux 上编译的现有 C++ 代码移植到 MacOS (leopard)。该软件是命令行应用程序,但可能计划使用 GUI 前端。 MacOS 使用 g++ 编译器。通过使用与 Linux 相同的编译器,看起来不会有任何问题,但总是存在。

移植期间有什么建议或者需要注意的问题吗?

最佳答案

您的应用是否有 GUI,哪一个(原生/Qt/Gtk+)?

如果不是,需要注意的问题(与 Linux 相比)主要在动态链接方面。 OS X 使用“-dylib”和“-bundle”,实际上有两种动态库(运行时可加载的和普通的)。 Linux 只有一种(-shared),而且在这方面比较宽松。

如果您的应用程序有 GUI,您需要使用 Objective-C 在 Cocoa 中重新编写整个程序。这意味着您还将学习一种新的语言。有些人(如 MS)使用过 Carbon(C++ API),但它正在被淘汰。我不会向新项目推荐它。

最好的运气是使用 Qt 或 Gtk+。几天前(重新)宣布了原生 Gtk+ 端口(参见 Imendio)。

附注 OS X 当然也运行 X11 二进制文件,但将它推给您的任何客户可能是一条艰难的道路。他们习惯于 Aqua 界面,并以此为生。将 X11 视为一个非常短期的解决方案。

p.p.s. OS X 附带的开源插件库数量有限,而且它们的版本可能会落后。在 Linux 中,您可以轻松地要求用户安装“libxxx v.y.y”,而在 OS X 中,有多种打包方法(fink、macports),对于商业工具,所需的库应该包含在应用程序中。 OS X 为此提供了“应用程序包”和“框架”(本地拷贝,使应用程序自给自足)。 Linux没有这样的概念。这也会对您的构建系统产生很大影响;也许你会想尝试像 SCons 这样的东西适用于所有平台?

关于c++ - 将 C++ 代码移植到 MacOS 有哪些建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/145621/

相关文章:

c++ - 如何获得编译警告

c++ - directory_iterator 遇到段错误

objective-c - 操作系统 : "Window Server: failed setting the front application to My App"

c++ - 尝试在终端(MacOSX)中编译两个.cpp文件(来自XCode)时的“Duplicate symbol”

c++11 - gcc 4.3.4 支持 unique_ptr 吗?

c++ - 为什么拥有析构函数会使类不可复制?

c++ - "std::string const &s"和 "const std::string &s"有什么区别?

c++ - 我可以只使用固定数组而不是内存池吗?

objective-c - 如何将 OpenOffice Calc 嵌入到我自己的应用程序中?

linux - Arch Linux ARM on Raspberry pi 来自 OSX