c++ - 如何将 boost 库添加到 Xcode 11? C++

标签 c++ xcode boost

我找不到在 Xcode 11.2.1 中添加 boost 的方法。我在名为“框架和库”的目标下找到了一个设置。我将 boost 目录拖到那里,它被添加到项目的“框架”部分。但是,在构建项目时,它说“找不到文件”。例如:

#include <boost/lambda/lambda.hpp> 

导致“找不到文件”错误。我没有添加 boost ,而是拖动了 Macports 的整个包含区域。 Xcode 花了一段时间来解析它,但我得到了同样的错误。因此,在 Frameworks 下它有“include”,但它找不到相关的 hpp 文件,即使我检查过它在 boost 树中。

我已经通过 Macports 安装了 boost。它驻留在/opt/local/include/boost 中。

在 Xcode 文档中,我看到了对“USER_HEADER_SEARCH_PATHS”的引用。我想出了如何在配置文件中设置它,所以我向项目添加了一个配置文件。我将其添加到配置文件中: USER_HEADER_SEARCH_PATHS =/opt/local/include/boost 但这也不起作用。 (如果我删除 boost ,那也不起作用)。

当我在项目的 Frameworks 位置选择“include”时,我看到该对象(Xcode 窗口的右侧)有不同的设置“Identity and Type”。我选择了“绝对路径”,它显示完整路径为/opt/local/include,这是正确的。但是,这也不能解决问题。

我是否需要在预定义区域中创建链接以便 Xcode 可以找到它?

我确实找到了一个相当丑陋的解决方法:在 STL 所在的同一区域(在 Xcode.app 目录结构中)创建一个指向 boost 库的软链接(soft link)。

使用该设置仅适用于单个文件。我可以将单个文件添加到设置中(通过拖放),但它不会遵循嵌套目录,所以很明显这不适用于库实现,例如 boost。

最佳答案

我更喜欢将依赖库保留在项目区域内。所以这就是我如何进行测试:

  1. macOS 命令行应用程序 C++ 模板在 Xcode 中创建新的 TestBoost 项目
    (现在有TestBoost.xcodeproj所在的TestBoost文件夹)

  2. 下载最新的boost boost_1_72_0.tar.gz并取消存档
    (现在有带有 boost 的 boost_1_72_0 文件夹)

  3. boost_1_72_0 文件夹复制到项目 TestBoost 文件夹中,使其位于 TestBoost.xcodeproj 旁边

  4. 在 Xcode Project Navigator 中选择 TestBoost 项目 > 选择 TestBoost 目标 > 选择 Build Settings 选项卡

  5. Search Paths 部分选择 Header Search Path,双击值区域并输入 ${SRCROOT}/boost_1_72_0 (保留非递归标志)

  6. TestBoost 目标中删除默认的 main.cpp(以避免 main 函数混淆)并添加一些来自 boost 的示例用于测试,例如。 boost_1_72_0/libs/algorithm/example/search_example.cpp

  7. 构建并运行 > 成功

输出: Xcode 11 boost integration

关于c++ - 如何将 boost 库添加到 Xcode 11? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59473859/

相关文章:

c++ - 我应该自己删除 boost::ptr_vector 的指针吗?

c++ - 如何动态分配已知值的数组

c++ - 如何为 Visual Studio C++ 设置单元测试

objective-c - CoreText 框架 - 应用程序无法在模拟器中运行 - iOS

ios - 如何在OS X应用程序中重置内容和设置?

ios - 如何用Xcode从苹果源代码编译CoreFoundation?

c++ - Asio 对 OpenSSL 的依赖

c++ - 是否可以在不在 C++ 中创建窗口的情况下创建消息循环

python - 一起调试boost暴露的Python和C++

c++ - 修改系统时钟时,boost::deadline_timer 可能会失败