如何将 "make" c++ 代码写入 xcode 的库

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

澄清澄清: 我知道如何使用 obj-c 或 swift 在 Xcode 中创建库。我知道如何在项目中使用这些。我知道如何编译这些项目,所以一切正常。我不知道的是如何把开源的C源代码(呵呵)build/make/compile放到库中


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


我通常自己写所有我使用的代码,不幸的是我只在Xcode中写Swift。所以我在使用 frameworks/libraries 方面有点落后。 现在我真的很想探索 Tesseract OCR,但我在构建所需的库时遇到了问题。对我来说,最好真正了解它是如何工作的,并且能够自己完成,而不仅仅是查看 Github 并找到预编译的源代码。

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

An iOS compiled version

An OSX compiled version

libjpeg 无法拖放的库示例。

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

install Tesseract with homebrew

我的问题是我对这些 c 库知之甚少,也不知道如何有效地构建它们 google。

我的问题:

我不是在寻找 Tesseract 特定的答案。我想自己学习如何做。

about static libraries

这篇文章没有提到如何实际添加c程序,让xcode制作。不过关于工作区的部分很有趣。

Article on building c project in Xcode

这个真的很相关。但是,例如,我无法在 Tesseract 中找到可执行文件。执行第 5 步时所有选项都显示为灰色。

这看起来很漂亮:simple c++ procect 为什么 tesseract 不能看起来像那样? :)

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

  • How do you compile/build the c code into an .a file?
  1. 点击Xcode项目名称Yourproj(LHS上树的根节点)
  2. 在 TARGETS 部分选择目标 Yourtarget
  3. 单击上方栏中的构建阶段
  4. 向下滚动到链接部分
  5. Mach-O Type更改为`静态库

根据 '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

的文件
  • How do you create an xcode project that builds a framework based on the c code?

YMMV,取决于您选择的语言。我还没有使用 Swift。只需添加 libYourtarget.a 作为 Yournewproj 的其他框架。正确的做法是

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

这应该有效。如果不是,请尝试消除编译错误,因为它是 YMMV,如前所述。

希望这对您有所帮助。

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

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

您不必这样做,事实上您不应该使用 xcode(这只是一个 GUI/frontend),而是坚持使用每个库告诉您使用的内容。在某些情况下,可以使用 xcode 进行构建。 打算让您使用 xcode 进行构建的项目往往包含一个 xcode 项目文件。

Apple 的编译器是 llvm/clang,因此它可能与 Linux 的 GNU gcc/g++ 略有不同。

编辑

您需要先安装leptonica和automake:

brew install automake
brew install leptonica

然后是运行建筑说明。 正如您在 make install 过程中会注意到的,该库位于

/usr/local/lib/libtesseract.a

而 headers 在:

/usr/local/include/tesseract

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