Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何构建谷歌&x27;s C++;Win32的libphonenumber库_C++_Windows_Boost_Build_Cmake - Fatal编程技术网

C++ 如何构建谷歌&x27;s C++;Win32的libphonenumber库

C++ 如何构建谷歌&x27;s C++;Win32的libphonenumber库,c++,windows,boost,build,cmake,C++,Windows,Boost,Build,Cmake,我们团队中的一些开发人员正在使用Java和C版本,这是一个国际电话号码的标准化库 他们声称这是美妙的/神奇的/等等 遗憾的是,作为一个Win32 C++开发人员,我的简单头脑不能完全掌握CMake、Boost和其他图书馆的所有神奇和神奇,我根本无法建立库。 有人可以提供一些提示或网址,以帮助我在正确的方向,使我们可以建立这个项目,并利用它 当前的障碍是在尝试运行CMake时(按照非常简短的自述文件中的说明),我收到以下错误消息: > -- Could NOT find Boost >

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

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

遗憾的是,作为一个Win32 C++开发人员,我的简单头脑不能完全掌握CMake、Boost和其他图书馆的所有神奇和神奇,我根本无法建立库。 有人可以提供一些提示或网址,以帮助我在正确的方向,使我们可以建立这个项目,并利用它

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

> -- Could NOT find Boost
> -- Configuring incomplete, errors occurred!
我以为我正确地设置了BOOST_ROOT,但很明显,要么我设置错误,要么我错过了其他环境变量

我怎样才能建立这个图书馆


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

您的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模块搜索

  • 在FindBoost.cmake中更改Boost\u其他\u版本,这是您已经完成的步骤
  • 从\libphonenumber\cpp更改CMakeLists.txt,更改行
    find_包(Boost 1.40.0组件线程)
  • 进入

    三,。在\libphonenumber\cpp,cd
    build中运行
    mkdir 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”

    尝试使用它进行编译,它类似于标准的UNIX构建环境,但在Windows上运行。使用它编译开源库通常比使用VisualStudio容易得多。

    谢谢。我加了1.47和1.47.0。不幸的是,这似乎无法解决问题。cmake如何知道去哪里寻找boost?我尝试设置BooStuoRooST,但显然我做了一些错误……你是否通过了<代码> -dBooStjava根> <代码>编译器?这是不是甚至可以在C++中使用,我认为它是Java,JavaScript?@贾斯廷-问题是C++的工具和文档(尤其是Win32)是不存在的/可怕的)它需要:Boost(线程)-您必须编译boost线程、协议缓冲区、Google测试和libIcu。这不是一项琐碎的任务。嗯,我知道我必须建立这些。我知道这不是一件小事,所以这里的问题是。问题是如何建设。CMake的东西是无用的,不起作用。注意:协议缓冲区不能用VS 2010I编译。我有同样的问题。我正在尝试使用VS2010为windows编译protobuf库,但失败了。还有别的办法吗?我还有一个问题是,我可以在不使用boost的情况下为windows编译libphonenumber库吗???
     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)