c++ - 如何将 GNUstep 编译器添加到 Qt 创建者以让他们在 Windows 上编译 .mm 文件?
问题描述
我有一个需要在 Windows 上编译的 MacOS 项目。我一直在使用 win32-clang-msvc 编译器,它似乎是唯一包含支持 Objective-c 编译的编译器。但是,我的文件有#import
编译器不支持的语句,并且正在使用一些 MacOS 库/框架(如基础)。
我已经安装了 GNUstep msys、core 和 devel 组件,但我不知道我需要输入 Qt 添加编译器菜单以使其实际工作的所有数据。我使用c++.exe
orcpp.exe
吗?我用gcc.exe
吗?制作路径在哪里?如何为其编写 mkspec?
有关于 GNUstep 的任何文档吗?
解决方案
QMAKE_EXTRA_COMPILERS
您可以使用变量在 Qt 中添加自定义编译器。
我们已经使用这种方法来支持使用 GNUstep 在 Android 上构建 Objective-C 源代码。您可以查看示例项目,其中包含一个objc-gnustep.pri文件,其中包含 Objective-C 源代码的编译器定义。这也应该同样适用于 Windows。
话虽如此,我不确定您使用 Clang 和 GNUstep MSYS 包的设置是否可以按原样工作,因为 GNUstep MSYS 包/库可能是使用 MinGW 库使用 GCC 构建的,而您将使用带有 MSVC 运行时库的 Clang。GCC 带有一个 Objective-C 运行时,但是将 Objective-C 与 Clang 一起使用需要外部libobjc2运行时,正如最近在邮件列表中讨论的那样,它目前似乎与 MinGW 不兼容。话虽这么说,我很想知道你是否可以让它工作。
目前,最好的选择可能是使用 MinGW 的 GCC 和 GNUstep 包,而不是使用 Clang,但请注意,这不支持自动引用计数 (ARC) 和仅由 Clang/libobjc2 支持的一些其他功能。
推荐阅读
- amazon-web-services - AWS Lambda 和 Cognito 部署错误:一次只能处理一个更新此 UserPool 的请求
- python - 如何将列标题批量添加到目录中的所有 CSV 文件并保留这些文件?
- python - 当我的代码中出现无成员错误时,我的代码如何才能完美运行?
- java - 如何使用列值过滤器查询并获取原始值的最后一个值?
- java - 如何从 npm ls 树输出中提取根级元素?
- python-2.7 - 如何在使用 fit_generator 拟合 keras 模型时修复“MemoryError”?
- python - 重复的请求发布到scrapy FormRequest
- java - 如何使用 Lamda 表达式根据另一个地图过滤地图的地图
- service-worker - 重新联机时后台同步不刷新页面
- python-3.x - 如何在不聚合的情况下根据唯一的字符串值将熊猫数据帧拆分为多个数据帧