【问题标题】:Installing C++ Libraries on OS X在 OS X 上安装 C++ 库
【发布时间】:2016-03-24 06:35:56
【问题描述】:

我正在努力理解一些基本概念,但我似乎无法弄清楚它们。

我真的很困惑为 C++ 安装(我认为它们被称为库)意味着什么。我正在尝试安装 OpenCV,但我不知道安装它需要发生什么、如何检查或 OpenCV 到底是什么(它是库、框架还是其他东西?)。

我的理解是 OpenCV(和其他库/框架)仅作为源代码分发,因此能够跨平台工作。然后,在你下载它之后,你必须构建它(虽然我不知道构建是什么意思),然后将你的编译器链接到它,以便它可以访问文件?我不知道这将如何完成,或者这意味着什么。我认为很多这一切都是由 CMake 完成的,但我不知道 CMake 真正做了什么,你将如何使用它,或者你将如何在代码中使用库/框架。此外,像 OpenCV 这样的库将安装在哪里,clang(或任何其他编译器/链接器)如何知道在哪里找到它们,以及它们是什么类型的文件(.a、.dylib、.cpp、.hpp、可执行文件,或一切的集合)?这种结构是 C++ 和 OS X 特有的还是更普遍?

我不是在寻找有关如何安装 OpenCV 或其他库的教程,而是在尝试了解其实际工作原理,因此我以后不需要教程。

【问题讨论】:

  • 您的问题有很多:您必须了解如何编译和链接 C++ 代码,如何将第三方库与 C++ 一起使用,以及像 cmake 这样的构建工具是什么。无论实现或平台如何,一般概念都适用于 C++。使用像 XCode 或 Eclipse-CDT 或 Visual Studio 之类的 IDE 掩盖了许多较低级别的细节(您在 GUI 中配置一些设置,其余的由工具完成),但是您的问题既非常广泛,也很难回答了解您的 C++ 熟练程度。
  • 我建议您首先用您想要使用 OpenCV 的语言和您计划使用的平台编写一个简单的“hello world”应用程序。接下来阅读有关其工作原理的详细信息。要解开这个谜团,你必须知道的主要事情是这个;程序被编译成单独的部分。各个部分通过“链接”过程组合成一个应用程序。使用 OpenCV 之类的东西需要您将程序的部分与其他人制作的部分(如 OpenCV)链接在一起。
  • 感谢您的快速回复。过去我已经成功地使用了 C++ 的 3rd 方库,但我不知道“幕后”发生了什么,因为像 pkg-config 这样的东西已经为我完成了肮脏的工作。我从来没有在 C++ 中使用过 IDE,因为对于初学者来说,它们似乎比使用文本编辑器和学习 IDE 的功能更令人困惑。到目前为止,我最大的问题是我发现的所有资源都没有讨论低级发生的事情,因此我不知道如何将简单的 hello world 程序扩展到更大、更有用的东西。
  • This 不会帮助您理解,但是如果您可以按照教程进行操作,那么它可能(也许)会让您开始使用 OpenCV 和 Mac
  • 我过去看过教程,但不知道下面发生了什么,我不确定这会有多大帮助。

标签: c++ macos opencv installation libraries


【解决方案1】:

在您可以在 Mac 上进行任何 C/C++ 开发工作之前,您需要前往 App Store 并免费下载 Xcode - 它是 Apple 的 IDE - 集成开发环境。如果没有Xcode,您将没有编译器(即clanggccg++),也没有构建工具(即make)。

安装 Xcode

如果您是 Mac 新手,App Store 看起来像这样:

Xcode 看起来像这样:

安装命令行工具

接下来你必须安装 Xcode 的命令行工具,所以启动一个终端 - 按 +SPACE 并开始输入 Terminal 并且当它猜对时,只需点击 Enter/Return。将以下内容复制并粘贴到终端并点击 Enter/Return

xcode-select --install

上述方法称为“Spotlight Search”,是在 Mac 上查找任何内容的最简单方法。

安装自制软件

然后,如果您想在 Mac 上安装 OpenCV,请安装包管理器,例如 homebrew,只需从 homebrew website 复制一行并将其粘贴到终端中即可。我不会在这里显示这条线,以防它发生变化并且几年后有人会看到它,但如果你转到上面的链接很容易看到。

查找包

然后你可以找到任何你想要的包:

brew search opencv    # Look for packages called "opencv"

brew search boost     # Look for "boost" libraries

安装 OpenCV

因此,对于 OpenCV 的普通版(无特殊选项)安装和构建,请执行以下操作:

brew install opencv

删除包

您可以稍后删除您不再需要的任何软件包:

brew rm opencv

更新包

您还可以使用以下命令更新所有已安装的软件包:

brew update && brew upgrade && brew cleanup

构建项目

安装完成后,您就可以开始编译和构建自己的项目了。如果您使用 pkg-config 包来获取您需要的所有必要的编译器/链接器设置,它会有所帮助,所以我建议:

brew install pkg-config

现在您可以使用非常简单的命令进行编译和链接,例如:

g++ $(pkg-config --cflags --libs opencv) process.cpp -o process

然后,如果您想在开始使用后继续使用Xcode IDE。

使用 Xcode 构建

一旦您开始进行基本编译,您可能想开始使用Xcode 来编辑您的程序,为此,您必须告诉Xcode 头文件在哪里以及库在哪里以及哪些库链接。这会因您的 OpenCV 版本而异,但您需要更改下面两个图中标记的位置。如果您按顺序单击它们,您将很容易找到它们 - 先是绿色区域,然后是黄色区域,然后是蓝色区域,然后是红色区域。

可以通过运行我在上一节中建议的相同pkg-config 命令找到需要进入我上面标记的 Xcode 设置区域的实际信息。所以运行:

pkg-config --cflags opencv

获取头(包含)文件的位置,然后运行

pkg-config --libs opencv

Xcode中获取链接器需要填写的信息。

【讨论】:

  • 感谢您的指导。我一定会尝试将 Xcode 作为 IDE。我过去曾使用过它,但只是作为文本编辑器使用,因为我希望了解如何从头开始构建代码,但这可能不切实际。我真的在寻找有关安装过程如何工作的信息,以及像 opencv 这样的包实际上是什么(它是库、框架还是其他东西?)。
  • 您好,非常详细的答案,谢谢。你介意告诉我为什么 pkg-config --cflags opencv 和 pkg-config --libs opencv 不适用于 FFMPEG 库吗?
  • pkg-config ... opencv 会告诉你构建opencv 包的标志/设置。如果你想构建一个不同的包,比如ffmpeg,你需要找到包(可能使用pkg-config --list-all),然后,当你找到你想要的包名时,(例如ffmpeg),你可以然后使用pkg-config --cflags --libs ffmpeg 或类似的。
  • 希望我在 5 年前看到这个。精彩的介绍。
  • @MarkSetchell,现在头文件搜索路径和库搜索路径是不是基本都换成了“框架搜索路径”..还是???
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
相关资源
最近更新 更多