您想将 Qt+VTK+Boost 与应用程序静态链接有什么具体原因吗?在 Mac 上,对于像这样的库,我想不出任何理由(许可除外)为什么静态链接比动态链接更可取。
查看 Bavarious 发布的“在 Mac OS X 上部署应用程序”链接。它解释了 Mac 应用程序如何存储在捆绑包中,从而允许由许多文件组成的应用程序在用户面前显示为单个文件。库也可以存储在一个包中(连同它们的头文件),在这种情况下,它被称为框架。任何需要的框架都可以存储在应用程序包中,使应用程序自包含。
Qt 带有一个名为的实用程序macdeployqt
,它自动将 Qt 框架(加上插件)复制到包中,然后修复应用程序二进制文件(使用install_name_tool
),以便动态链接器知道在应用程序包中查找。您可能需要为 VTK 和 Boost 手动执行此操作,如果它们不是作为框架自动构建的,这可能会更加复杂。虽然它们是流行的库,但 Internet 上应该有关于使用 VTK/Boost 部署 Mac 应用程序的指南。
此外,我不会为此使用 MacPorts 来安装 Qt。诺基亚提供的 Qt 二进制文件工作得很好,而且它们是通用的(为 32 位和 64 位构建,以防您需要同时针对两者)。
顺便说一句,我不是特别喜欢 Windows 的人,但我不认为将 DLL 放入 System32 是在 Windows 上部署库的好方法。对于我制作的 Qt 应用程序,我们将 Qt DLL(和 mingw/gcc DLL)放入与 .exe 相同的文件夹中,并且运行良好。