【问题标题】:How to build .a (Universal Static library) using existing C++ code如何使用现有 C++ 代码构建 .a(通用静态库)
【发布时间】:2021-08-03 05:26:34
【问题描述】:

我有一个 C++ 代码,我可以使用 ndk-build

Android 创建 .so 文件

同样,对于 iOS,我打算从现有 C++ 代码创建 .a(通用静态库)

问题是如何使用现有的 C++ 代码构建 .a 文件?

【问题讨论】:

  • 您是如何构建代码的?你试过什么?你遇到了什么问题?请出示minimal reproducible example
  • @AlanBirtles - 我正在尝试构建 C++ p7zip(7zip 的便携式版本,适用于 *nix 之类的操作系统),我在那里搜索了我看到的示例,其中大部分都提到了 Objective-c/Swift。我有 xcode 但我没有看到 Cocoa Touch 静态库
  • 你可以只运行带有适当编译器标志的 make 文件来构建一个通用库,如果这不起作用,你可以构建两个单独的库并将它们一起 lipo

标签: c++ ios xcode xamarin.ios .a


【解决方案1】:

在 Xcode 中(从任一模板 iOS 应用程序项目(或现有项目)开始:

  1. 新建一个静态库目标:File -> New -> Target....选择Framework or Library,然后选择Cocoa Touch Static Library
  2. 添加库源代码:将库源代码拖入Xcode项目。在出现的对话框中,选择上面创建的构建目标。
  3. 向库中添加项目依赖项:在项目导航中选择项目,即来自 Targets 的 iOS 构建目标。选择 Build Phases 选项卡,然后在窗口中的 Target Dependencies 下,单击 + 号。打开一个工作表(选择要添加的项目),库目标应位于列表顶部。
  4. 在 iOS 目标中包含库:在将二进制文件与库链接下,单击 +。库(一个 .a 文件)应位于列表顶部。
  5. 与 libc++ 的链接:如上述步骤。从列表中选择 libc++。
  6. 通过将扩展名从 .m 更改为 .mm,为任何需要包含库头文件的源代码文件启用 Objective-C++ 编译
  7. 构建 iOS 应用程序目标。

Xcode 将负责为您设置其他所有内容,包括编译器标志和标头搜索路径。

【讨论】:

    猜你喜欢
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    相关资源
    最近更新 更多