如何使用XCode构建增强“入门”示例?

时间:2009-12-10 17:21:56

标签: regex xcode boost

因此,假设您要构建Boost“Getting Started”示例并使用Xcode项目链接到它们,而不是在命令行上构建。您尝试仅限标题选项,它可以正常工作。

但是你接受了示例来源:

#include <boost/regex.hpp>
#include <iostream>
#include <string>

int main()
{
    std::string line;
    boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );

    while (std::cin)
    {
        std::getline(std::cin, line);
        boost::smatch matches;
        if (boost::regex_match(line, matches, pat))
            std::cout << matches[2] << std::endl;
    }
}

您可以执行以下操作:

  1. 使用./bjam install
  2. 构建boost库
  3. 打开Xcode并创建一个新的C ++命令行实用程序项目。
  4. 将libboost_regex.dylib拖到Groups&amp; amp;中的Products文件夹中。文件树视图(检查允许其复制文件的选项)
  5. 设置项目选项,使标题搜索路径指向Boost包含文件夹
  6. 构建并运行项目!
  7. 可悲的是,如果您打开控制台(运行|控制台),您将看到一个无法找到dylib的错误:

    dyld: Library not loaded: libboost_regex.dylib
      Referenced from: /Users/matt/Documents/Boost/test/GettingStarted/build/Debug/GettingStarted
      Reason: image not found
    

    因此,不知道更好的方法让Xcode执行此操作,您将dylib复制到your_project / build / debug /并运行!万岁!

    你是以细节为导向的人,你在标准中输入一些东西来试试:

    > Subject: foo bar baz
    > foo bar baz
    

    然后是段错误。

    Program received signal:  “EXC_BAD_ACCESS”.
    

    ACK!

    但不要害怕。我知道问题是什么!如果没有人打败我,我会在午餐后发布解决方案。

2 个答案:

答案 0 :(得分:2)

这里的问题是boost的默认版本不能很好地适应项目的调试版本。您需要使用调试变量来构建boost,其执行方式如下:

./bjam install variant=debug define=_GLIBCXX_DEBUG --with-regex

_GLIBCXX_DEBUG实际上是导致冲突的Xcode项目中的选项。

然后,您可以将调试版本的库与调试Xcode项目链接起来。 (我认为这就是MacPorts预编译二进制文件的生成方式。)

请记住,您可以使用bjam变体同时构建多个目标。

另外:如果在重建后它不起作用,请检查以确保您链接的库的版本实际上是您刚刚重建的库版本!

另外:相反,它可能会从调试配置中删除_GLIBCXX_DEBUG定义。双击Targets中的可执行文件以打开项目选项,然后从预处理器宏中删除_GLIBCXX_DEBUG

希望这有帮助。

答案 1 :(得分:1)

我有同样的错误。我忘了创建“复制文件”构建阶段并复制框架。

转到项目导航器中的第一个按钮以显示文件

单击您的项目以编辑项目设置 单击您正在使用boost lib的目标 单击右下角的“添加构建阶段”按钮 选择“添加复制文件” 将弹出窗口中的“目标”更改为“框架” 将libboost_regex.dylib从项目导航器拖到复制文件表

图像链接不起作用,因此对于屏幕截图: http://imgur.com/a/8ojye#6