C++ 开发跨平台C++;使用qmake的静态库(通过Mac上的Qt creator IDE)

C++ 开发跨平台C++;使用qmake的静态库(通过Mac上的Qt creator IDE),c++,cross-platform,qt-creator,qmake,C++,Cross Platform,Qt Creator,Qmake,我正在开发一个用于所有平台(linux、mac和windows)的库。该库基于Qt,这是一个跨平台的用户界面库。我正在使用Mac开发这个库。我开发的当前构建是一个静态库(.a),它可以在Linux和Mac上工作。这个。一个库是否也可以在Windows中工作(比如说使用Visual Studio),或者我必须为此创建一个单独的库类型?如果是,如何从Mac创建windows静态库?供您参考,我正在使用QtCreator IDE创建静态库。一个简单的指南/代码示例/有用的链接将非常有用。首先,如果您想

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

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

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

当然,为了使它能够处理任何事情,它必须使用与它链接到的程序相同的编译器进行编译

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


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

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