正则表达式 – 如何使用XCode构建增强“入门”示例?

因此,假设您要构建Boost“入门”示例并使用 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;
    }
}

你做了以下事情:

>使用./bjam install构建boost库
>打开Xcode并创建一个新的C命令行实用程序项目.
>将libboost_regex.dylib拖到Groups& amp;中的Products文件夹中.文件树视图(检查允许它复制文件的选项)
>设置项目选项,以便标题搜索路径指向Boost包含文件
>构建并运行项目!

遗憾的是,如果您打开控制台(运行|控制台),您将看到一个无法找到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!

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

这里的问题是,boost的默认版本不能很好地适应项目的调试版本.您需要使用调试变体来构建boost,其执行方式如下:
./bjam install variant=debug define=_GLIBCXX_DEBUG --with-regex

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

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

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

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

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

希望这可以帮助.

相关文章

一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^d{n}$ 3 至少n位的数字:^d{n,}$ 4 m-n位的数字...
正则表达式非常有用,查找、匹配、处理字符串、替换和转换字符串,输入输出等。下面整理一些常用的正则...
0. 注: 不同语言中的正则表达式实现都会有一些不同。下文中的代码示例除特别说明的外,都是使用JS中的...
 正则表达式是从信息中搜索特定的模式的一把瑞士军刀。它们是一个巨大的工具库,其中的一些功能经常...
一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数...
\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n”匹配字符“n”。“\n...