【问题标题】:How to build google's C++ libphonenumber library for Win32如何为 Win32 构建谷歌的 C++ libphonenumber 库
【发布时间】:2011-12-20 10:36:21
【问题描述】:

我们团队中的一些开发人员正在使用 libphonenumber 的 Java 和 C# 版本,这是一个国际电话号码的规范化库。

他们声称这是美妙/神奇/等等。

不幸的是,作为一名 Win32 C++ 开发人员,我单纯的头脑无法完全掌握 CMake、boost 和其他库的所有奇迹和魔力,而且我根本无法构建该库。

有人可以提供一些提示或 URL 来帮助我指明正确的方向,以便我们可以构建这个项目并利用它吗?

当前的绊脚石是在尝试运行 CMake 时(按照非常简短的自述文件中的说明)我收到以下错误消息:

> -- Could NOT find Boost
> -- Configuring incomplete, errors occurred!

我以为我正确设置了 BOOST_ROOT,但显然我设置错误或者我缺少其他环境变量。

如何构建这个库?

我们使用 VS 2008,但我的机器上也有 VS 2010。我很乐意使用其中任何一个进行构建。

【问题讨论】:

  • 这甚至可以在 C++ 中使用,我还以为是 Java,只有 JavaScript?
  • @Justin - code.google.com/p/libphonenumber - 问题在于 C++(尤其是 win32)的工具和文档不存在/很糟糕)
  • 它需要:Boost(thread) - 你必须编译 boost 线程、Protocol Buffers、Google Test 和 libIcu。这不是一项简单的任务。
  • 嗯,我知道我必须构建这些。而且我知道这不是微不足道的 - 因此这里的问题。问题是如何建造。 CMake 的东西没用而且不起作用。

标签: c++ windows boost build cmake


【解决方案1】:

相对于您安装的 Boost 版本,您的 CMake 可能已经过时。检查位于 CMake Modules 目录中的文件 FindBoost.cmake。它必须包含这样的部分:

set(_Boost_KNOWN_VERSIONS ${Boost_ADDITIONAL_VERSIONS}
    "1.46.1" "1.47" "1.47.0"
    "1.46.0" "1.46" "1.45.0" "1.45" "1.44.0" "1.44" "1.43.0" "1.43" "1.42.0" "1.42"
    "1.41.0" "1.41" "1.40.0" "1.40" "1.39.0" "1.39" "1.38.0" "1.38" "1.37.0" "1.37"
    "1.36.1" "1.36.0" "1.36" "1.35.1" "1.35.0" "1.35" "1.34.1" "1.34.0"
    "1.34" "1.33.1" "1.33.0" "1.33")

【讨论】:

  • 谢谢。我添加了 1.47 和 1.47.0。不幸的是,这似乎并没有解决它。 cmake 如何知道去哪里寻找提升?我尝试设置 boost_root 但显然我做错了什么......
  • 您是否将-DBOOST_ROOT=<your boost path here> 传递给编译器?
【解决方案2】:

您可以尝试将 BOOST_INCLUDEDIR 和 BOOST_LIBRARYDIR 传递给编译器;这样你就可以完全绕过cmake模块搜索。

【讨论】:

    【解决方案3】:
    1. 在 FindBoost.cmake 中更改 Boost_ADDITIONAL_VERSIONS,您已经完成的步骤
    2. 从\libphonenumber\cpp更改CMakeLists.txt,改行find_package (Boost 1.40.0 COMPONENTS thread)

    进入

     set(Boost_USE_STATIC_LIBS        ON)
     set(Boost_USE_MULTITHREADED      ON)
     set(Boost_USE_STATIC_RUNTIME    OFF) //since CMake 2.8.3
     find_package (Boost 1.47.0 COMPONENTS thread)
    

    3。在 \libphonenumber\cpp 中运行 mkdir build,cd build 4. 运行 cmake -G "your generator" -DBOOST_ROOT="you_path_to_boost_147_0 folder,",例如:cmake -G "Visual Studio 10" ../ -DBOOST_ROOT="E:\libphonenumber\cpp\3rdparty"

    【讨论】:

    • 注意:Protocol Buffers 不能用 VS 2010 编译
    • 我有同样的问题。我正在尝试使用 VS2010 为 Windows 编译 protobuf 库,但它失败了。还有其他方法吗?我还有一个问题是,我可以在不使用 boost 的情况下为 windows 编译 libphonenumber 库吗???
    【解决方案4】:

    尝试使用cygwin 编译它,它就像一个标准的UNIX 构建环境,但运行在Windows 上。使用它编译开源库通常比使用 Visual Studio 容易得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 2020-12-25
      相关资源
      最近更新 更多