【问题标题】:Developing cross platform C++ static library using qmake (via Qt creator IDE on Mac)使用 qmake 开发跨平台 C++ 静态库(通过 Mac 上的 Qt creator IDE)
【发布时间】:2011-12-27 14:45:13
【问题描述】:

我正在开发一个适用于所有平台(linux、mac 和 windows)的库。该库基于 Qt,它是一个跨平台的用户界面库。我正在使用 Mac 开发这个库。我开发的当前版本是一个静态库 (.a),可在 Linux 和 Mac 上运行。这个.a library 是否也可以在 Windows 中工作(假设使用 Visual Studio),还是我必须为此创建一个单独的库类型?如果是,我如何从我的 Mac 创建 Windows 静态库?供您参考,我正在使用 QtCreator IDE 创建静态库。一个简单的指南/代码示例/有用的链接会很有帮助。

【问题讨论】:

  • 如果您使用的是(现代)mac,那么您可以启动到多个分区或在虚拟机上启动另一个操作系统。当您在另一个“系统”上开发时,后者便于构建和单元测试。
  • 我认为 Qt 更喜欢动态链接库,特别是因为插件(对样式很有用,...)。

标签: c++ cross-platform qt-creator qmake


【解决方案1】:

首先,如果您想编写跨平台软件,您需要在目标平台上对其进行测试。如果您没有要测试的 Windows 计算机,那么您可以告别 Windows 兼容性。

其次,Windows 确实有静态库,但它们使用 .lib 扩展名而不是 .a。像 qmake 这样的严肃构建系统应该能够处理这个问题。如果你告诉它生成一个静态库,它会在 Windows 上生成一个 .lib,在其他平台上生成一个 .a。

当然,要让它与任何东西一起工作,它必须使用与它所链接的程序相同的编译器进行编译。

如果您使用 GCC(或 MinGW,GCC 的 Windows 端口)生成 .lib 文件,则无法将其链接到 Visual Studio 项目中,因为它们使用不同的 ABI、不同的标准库实现和不同的运行时(并且因为 MSVC .lib 文件的格式没有记录,并且在编译器版本之间发生变化)。

但是,由于 qmake 可以与大多数编译器一起使用,因此使用 Visual Studio 生成 .lib 文件应该没有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 2011-08-10
    • 1970-01-01
    • 2018-02-14
    • 2013-11-11
    • 2010-11-24
    • 1970-01-01
    相关资源
    最近更新 更多