如何为Win32构建谷歌的C ++ libphonenumber库

时间:2011-11-02 15:28:47

标签: c++ windows boost build cmake

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

他们声称它很精彩/神奇/等等。

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

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

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

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

我以为我正确地设置了BOOST_ROOT,但显然要么我做错了,要么我错过了其他的env vars。

如何构建此库?

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

4 个答案:

答案 0 :(得分:0)

你的CMake可能已经过时了你安装的Boost版本。检查位于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 :(得分:0)

您可以尝试将BOOST_INCLUDEDIR和BOOST_LIBRARYDIR传递给编译器;通过这种方式,您可以完全绕过cmake模块搜索。

答案 2 :(得分:0)

  1. 在FindBoost.cmake中更改Boost_ADDITIONAL_VERSIONS,您已经完成的步骤
  2. 从\ libphonenumber \ cpp更改CMakeLists.txt,更改行find_package (Boost 1.40.0 COMPONENTS thread)
  3.  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”,ex:cmake -G "Visual Studio 10" ../ -DBOOST_ROOT="E:\libphonenumber\cpp\3rdparty"

答案 3 :(得分:0)

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