如何制作"将c ++代码放入xcode库中

时间:2015-09-27 20:27:51

标签: c++ xcode frameworks static-libraries

澄清澄清: 我知道如何使用obj-c或swift在Xcode中创建库。我知道如何在项目中使用它们。我知道如何编译这些项目所以一切正常。我不知道的是如何使用开源C源代码(hehe)并将其构建/编译/编译到库中。

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

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

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

An iOS compiled version

An OSX compiled version

libjpeg图书馆的例子,不能拖放。

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

install Tesseract with homebrew

我遇到的问题是我对这些c库知之甚少,以及如何有效地构建它们甚至google。

我的问题:

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

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

about static libraries

这篇文章没有提到如何实际添加c程序并让xcode成功。关于工作空间的部分很有趣。

Article on building c project in Xcode

这个实际上非常重要。但是,我无法在Tesseract中找到可执行文件。执行步骤5时,所有选项都显示为灰色。

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

2 个答案:

答案 0 :(得分:2)

这是一个很大的问题。对于这部分,我最近遇到了Xcode。

  
      
  • 如何将c代码编译/构建到.a文件中?
  •   
  1. 点击Xcode项目名称Yourproj(LHS树的根节点)
  2. 在目标部分
  3. 上选择目标Yourtarget
  4. 点击上方栏中的“构建阶段”
  5. 向下滚动到“链接”部分
  6. Mach-O Type更改为“静态库”
  7. 根据'C'语言要求,AFAIK可以动态更改:

    1. 从上一点开始,向下滚动到Apple LLVM - 语言部分
    2. C Language Dialect更改为您的选择,例如GNU99
    3. 如有必要,请选择Compile Sources As:'C'
    4. 向上滚动至Packaging并修改Product NameYourtarget
    5. Executable Prefix修改为lib
    6. Executable Extension修改为.a
    7. 现在输出应该变成像libYourtarget.a

      这样的文件
        
          
      • 如何创建基于c代码构建框架的xcode项目?
      •   

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

      1. 点击Xcode项目名称Yourproj(LHS树的根节点)
      2. 点击上方栏中的Build Phases
      3. 确保在左侧选择目标
      4. 现在展开Link Binary with Libraries,然后点击加号,然后点击Add Other按钮
      5. 浏览到您的libYourtarget.a文件,然后点击“打开”。
      6. 这应该有效。如果没有,尝试摆脱编译错误,因为它已经是YMMV,如上所述。

        希望这有帮助。

答案 1 :(得分:2)

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

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

你不必,实际上你不应该使用xcode(它只是一个GUI /前端),而是坚持每个库告诉你使用的东西。在某些情况下,可能可以使用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

标题位于:

/usr/local/include/tesseract

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