C++ 如何为Windows构建Google RE2?

C++ 如何为Windows构建Google RE2?,c++,regex,windows,re2,C++,Regex,Windows,Re2,如何为Windows构建Google RE2?有人尝试过?我打赌它可以很容易地使用进行构建。更新:找到一个Windows项目,它可能工作得更好,也可能不更好: 旧答案(非MSVC):我在提供了一个fork,您可以下载源代码作为.zip文件,打开.vcproj文件,并以“发布”模式编译。自2015年9月以来,一个CMakeLists.txt被添加到RE2存储库中。因此,现在您可以使用为VisualStudio生成文件,然后像普通的VisualStudio项目一样进行构建。我已经写了一个简单的关于如

如何为Windows构建Google RE2?有人尝试过?

我打赌它可以很容易地使用进行构建。

更新:找到一个Windows项目,它可能工作得更好,也可能不更好:


旧答案(非MSVC):

我在提供了一个fork,您可以下载源代码作为.zip文件,打开
.vcproj
文件,并以“发布”模式编译。

自2015年9月以来,一个CMakeLists.txt被添加到RE2存储库中。因此,现在您可以使用为VisualStudio生成文件,然后像普通的VisualStudio项目一样进行构建。我已经写了一个简单的关于如何在你的C++项目中构建和整合Re2。已针对VS 13和VS 15进行测试。

您可以通过Bazel构建工具使用Microsoft Visual Studio为Windows构建RE2

  • 通过
    git clone获取最新版本的RE2https://github.com/google/re2.git
  • 下载Bazel Windows二进制文件(向下滚动并查找.exe文件)
  • 将Bazel二进制文件放在RE2的根目录中,或将带有Bazel二进制文件的目录添加到%PATH%
  • 从“开始”菜单运行Visual Studio命令提示符,例如“x64本机工具命令提示符”
  • 在命令提示下,转到RE2根文件夹,例如
    cd c:\gitrepos\RE2
  • 运行bazel.exe build:all
  • Bazel将创建子目录为
    Bazel-bin
    Bazel-out
    Bazel-re2
    Bazel-testlogs
  • 您可以在
    bazel-bin
  • 或者,您可以运行测试程序,例如
    regexp\u benchmark.exe
    。您将看到如下输出:

  • 不过,我不会确切地称Cygwin为“在windows上”,正如Wine不是“在Unix上”。您使用的是什么编译器?Re2不会在明文上建立,因为明文不实现完整的C++标准。(尤其是wchar_t东西)@Billy ONeal,我用的是MSVC 2010。但是可以再找一个。@user:MSVC应该可以正常工作。谷歌不提供它的MaFor文件,但是你应该能够像你一样的任何其他C++库来构建。@ Billy ONeal,它忽略了一些文件,至少是'sys/Time.h’,'sys /Realth.h ''和'pthul.h '@ MLVLJR:它支持数据类型<代码> WCARGYT ,但是它缺少一些东西,如代码>字符特征< /COD>,<代码> WSTRIGSTROUND等等。也许自从我上次使用它以来,情况已经改变了,但是AFAIK Boost.XPressive仍然无法在该编译器上构建,因为它缺少这些位。如何构建它?需要什么工具?很棒的东西。我现在就试试。我正在尝试让pyre2为Python工作。re2是一个先决条件,我已经在上面的发布模式下为windows构建了re2,但我不确定如何安装它。我尝试使用cygwin使用'make'命令,但我一直在获取write funct的作用域错误。有人能解释一下我是如何为python安装的吗?最好给MSVC一个答案,因为这是windows。看到“unixman”要求MSVC真奇怪。那不是异端邪说吗?lolre2win确实可以工作,但有人知道更为最新的windows端口吗?链接已断开。分步教程的正确链接是
    Search_Easy0_CachedDFA/8    10000000           105 ns/op      75.71 MB/s
    Search_Easy0_CachedDFA/16   20000000           107 ns/op     148.31 MB/s
    Search_Easy0_CachedDFA/32   20000000           121 ns/op     262.31 MB/s
    Search_Easy0_CachedDFA/64   20000000           122 ns/op     523.80 MB/s
    Search_Easy0_CachedDFA/128  20000000           120 ns/op    1061.91 MB/s
    Search_Easy0_CachedDFA/256  20000000           122 ns/op    2081.69 MB/s
    Search_Easy0_CachedDFA/512  10000000           185 ns/op    2760.31 MB/s
    Search_Easy0_CachedDFA/1K   10000000           270 ns/op    3786.29 MB/s
    Search_Easy0_CachedDFA/2K    5000000           409 ns/op    4995.25 MB/s
    Search_Easy0_CachedDFA/4K    5000000           573 ns/op    7143.45 MB/s
    Search_Easy0_CachedDFA/8K    1000000          1144 ns/op    7159.05 MB/s
    Search_Easy0_CachedDFA/16K   1000000          1887 ns/op    8680.17 MB/s
    Search_Easy0_CachedDFA/32K    500000          3620 ns/op    9049.65 MB/s
    Search_Easy0_CachedDFA/64K    500000          7411 ns/op    8842.68 MB/s
    
    etc...