如何将 C++ 代码"make"到 xcode 库中

How to "make" c++ code into a library for xcode

本文关键字:make xcode 库中 代码 C++      更新时间:2023-10-16

要澄清澄清:我知道如何使用obj-c或swift在Xcode中创建库。我知道如何在项目中使用这些。我知道如何编译这些项目,以便一切正常。我不知道的是如何获取开源C源代码(呵呵(并将其构建/制作/编译到库中。


只是为了澄清以下内容:我正在寻找一种在Swift应用程序中使用c库的方法,这意味着使用Xcode。c库不必使用/在Xcode中构建,我可以使用其他工具。


我通常自己写所有我使用的代码,不幸的是,我只用Xcode写Swift。所以我在使用框架/库方面有点落后。现在我真的很想探索Tesseract OCR,但我在构建所需的库时遇到了困难。对我来说,更好的是真正了解这是如何工作的,并能够自己做到这一点,而不仅仅是在Github上查找预编译的源代码。

以下两个项目处理这一问题的方式不同。iOS版本使用预编译的库。(.a文件(OSX版本使用包含库文件(尚未编译(的项目。

iOS编译版

一个OSX编译版本

一个库的libjpeg示例,它不能只是拖放。

使用brew只会将其作为命令行工具安装,而不会生成lib。

用自制安装Tesseract

我遇到的问题是,我对这些c库知之甚少,也不知道如何构建它们,甚至可以有效地在谷歌上搜索。

我的问题:

  • 如何将c代码编译/构建到.a文件中
  • 如何创建一个xcode项目,该项目基于c代码?(可选(
  • 这一切的正确词汇是什么

我不是在寻找Tesseract的具体答案。我想自己学习如何做到这一点。

关于静态库

本文没有提到如何实际添加c程序并让xcode生成它。不过,关于工作区的部分很有趣。

关于在Xcode 中构建c项目的文章

这一点实际上非常重要。然而,例如,我在Tesseract中找不到可执行文件。执行步骤5时,所有选项都将变灰。

这看起来很漂亮:简单的c++过程为什么tesseract不能看起来像那样?:(

如果您想构建Tesseract,请按照UNIX系统的说明进行操作:

./autogen.sh
./configure
make
sudo make install
sudo ldconfig

您不必,事实上您不应该使用xcode(它只是一个GUI/前端(,而是坚持每个库告诉您要使用的内容。在某些情况下,可能会使用xcode进行构建。打算使用xcode进行构建的项目往往会包含一个xcode项目文件。

苹果的编译器是llvm/clang,所以它可能与Linux的GNU gcc/g++有一些细微的区别。

编辑

您需要首先安装leptonica和automake:

brew install automake
brew install leptonica

然后运行构建说明。正如您在安装过程中所注意到的,库位于中

/usr/local/lib/libtesseract.a

标题在:

/usr/local/include/tesseract

从那时起,这就是在你的项目中使用它的问题。我用brew和命令行工具在OSX Yosemite 10.10.5上测试了这一点。

这是一个大问题。就我而言,我最近遇到了Xcode。

  • 如何将c代码编译/构建到.a文件中
  1. 单击Xcode项目名称Yourproj(LHS上树的根节点(
  2. 在TARGETS部分选择目标Yourtarget
  3. 单击上部栏上的"构建阶段">
  4. 向下滚动到"链接"部分
  5. Mach-O Type更改为`Static Library

根据"C"语言要求,AFAIK可以随时更改:

  1. 从上面的最后一点,向下滚动到Apple LLVM-语言部分
  2. C Language Dialect更改为您的选择,例如GNU99
  3. 如有必要,选择Compile Sources As:"C">
  4. 向上滚动至Packaging并将Product Name编辑至Yourtarget
  5. Executable Prefix编辑为lib
  6. Executable Extension编辑为.a

现在输出应该变成类似libYourtarget.a 的文件

  • 如何创建一个xcode项目来构建一个基于c代码的框架

YMMV,基于您选择的语言。我还没有用过Swift。只需添加libYourtarget.a作为Yournewproj的其他框架即可。正确的方法是

  1. 单击Xcode项目名称Yourproj(LHS上树的根节点(
  2. 点击上方栏上的Build Phases
  3. 确保在左侧选择了目标
  4. 现在展开Link Binary with Libraries并单击加号,然后单击Add Other按钮
  5. 浏览到您的libYourtarget.a文件,然后单击"打开">

这应该行得通。如果没有,请尝试消除编译错误,因为这是前面提到的YMMV。

希望这能有所帮助。