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

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

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

不幸的是,作为一名Win32 C ++开发人员,我的简单思维不能完全掌握CMake,boost和其他库的所有奇妙和魔力,我根本无法build立这个库。

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

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

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

我以为我正确设置BOOST_ROOT,但显然要么我把它设置错了,或者我错过了其他envvariables。

我怎样才能build立这个图书馆?

我们使用VS 2008,但是我的机器上也有VS 2010。 我会很高兴得到任何一个构build

您的CMake可能已经过时了您安装的Boost版本。 检查位于CMake模块目录中的文件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") 

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

  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文件夹”,例如: cmake -G "Visual Studio 10" ../ -DBOOST_ROOT="E:\libphonenumber\cpp\3rdparty"

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