如何将 "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 版本使用包含库文件(尚未编译)的项目。
libjpeg 无法拖放的库示例。
使用 brew 只会将其安装为命令行工具,不会生成库。
install Tesseract with homebrew
我的问题是我对这些 c 库知之甚少,也不知道如何有效地构建它们 google。
我的问题:
- 如何将c代码compile/build转换成.a文件?
- 如何创建一个xcode项目来构建基于
c代码? (可选)
- 所有这些的正确词汇是什么?
我不是在寻找 Tesseract 特定的答案。我想自己学习如何做。
这篇文章没有提到如何实际添加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?
- 点击Xcode项目名称
Yourproj
(LHS上树的根节点)
- 在 TARGETS 部分选择目标
Yourtarget
- 单击上方栏中的构建阶段
- 向下滚动到链接部分
- 将
Mach-O Type
更改为`静态库
根据 'C' 语言要求,AFAIK 这可以即时更改:
- 从上面的最后一点开始,向下滚动到 Apple LLVM - 语言部分
- 将
C Language Dialect
更改为您的选择,例如GNU99
- 如有必要,选择
Compile Sources As
:'C'
- 向上滚动到
Packaging
并将 Product Name
编辑为 Yourtarget
- 将
Executable Prefix
编辑为lib
- 将
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
的其他框架。正确的做法是
- 点击Xcode项目名称
Yourproj
(LHS上树的根节点)
- 点击上方栏的
Build Phases
- 确保在左侧选择了一个目标
- 现在展开
Link Binary with Libraries
并单击加号,然后单击 Add Other
按钮
- 浏览到您的
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 上测试了这个。
澄清澄清: 我知道如何使用 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 版本使用包含库文件(尚未编译)的项目。
libjpeg 无法拖放的库示例。
使用 brew 只会将其安装为命令行工具,不会生成库。
install Tesseract with homebrew
我的问题是我对这些 c 库知之甚少,也不知道如何有效地构建它们 google。
我的问题:
- 如何将c代码compile/build转换成.a文件?
- 如何创建一个xcode项目来构建基于 c代码? (可选)
- 所有这些的正确词汇是什么?
我不是在寻找 Tesseract 特定的答案。我想自己学习如何做。
这篇文章没有提到如何实际添加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?
- 点击Xcode项目名称
Yourproj
(LHS上树的根节点) - 在 TARGETS 部分选择目标
Yourtarget
- 单击上方栏中的构建阶段
- 向下滚动到链接部分
- 将
Mach-O Type
更改为`静态库
根据 'C' 语言要求,AFAIK 这可以即时更改:
- 从上面的最后一点开始,向下滚动到 Apple LLVM - 语言部分
- 将
C Language Dialect
更改为您的选择,例如GNU99
- 如有必要,选择
Compile Sources As
:'C' - 向上滚动到
Packaging
并将Product Name
编辑为Yourtarget
- 将
Executable Prefix
编辑为lib
- 将
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
的其他框架。正确的做法是
- 点击Xcode项目名称
Yourproj
(LHS上树的根节点) - 点击上方栏的
Build Phases
- 确保在左侧选择了一个目标
- 现在展开
Link Binary with Libraries
并单击加号,然后单击Add Other
按钮 - 浏览到您的
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 上测试了这个。