如何在boost 1.57(应用程序和dll)中安装boost模块

时间:2015-01-29 10:38:17

标签: c++ boost cmake

我想安装:

我正在按照Boost.DLL的说明说:

  • clone Boost.DLL repository:git clone https://github.com/apolukhin/Boost.DLL dll
  • 输入dll/test文件夹并运行./b2cd dll/test; ../../../b2

测试失败:

  

F:\ P \ thridparty \ boost \ boost / function / function_template.hpp(767):   错误C2664:'int(boost :: detail :: function :: function_buffer&,T0)':   无法将参数2从'std :: string'转换为   “的std :: basic_string的< _Elem,_Traits,_Alloc> “

(我也试图将include / boost / *复制到/ boost / *)

据我所知,测试通过......

但是当我尝试使用它时,我找不到它......即使使用cmake

find_package( Boost 1.57 COMPONENTS system filesystem dll application REQUIRED )

我得到了:

  

无法找到以下Boost库:

      boost_dll
      boost_application

那么安装这个模块的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

Boost :: Application和Boost :: DLL不是Boost的一部分,因此Cmake无法找到它们。

到目前为止,我还没有深入研究Boost :: DLL,但Boost :: Application可以通过简单的clone / submodule与您的项目一起使用。它只是标题库,因此不需要构建/安装。

可以找到示例项目on github

在我的情况下,它是git子模块<项目根> / hdr / application。

答案 1 :(得分:2)

有两种方法:

  • 如果您想使用现有的boost安装,那么,由于库只是标题,您只需要复制目录的内容" include / boost"到你的升压装置的include文件夹,例如。
  

copy" Boost.Application / include / boost / *"到" boost_installation_dir / boost /"

  • 如果你想构建boost和run tests等,你需要将它们复制到boost源的libs目录中(而不是你的boost安装),所以有一个boost / libs / application和一个" boost / libs / dll",例如:
  

copy" application" to" boost_src_dir / libs"

然后,就像平常一样在平台上构建和安装boost(遵循getting started

无论哪种方式:您不必在cmake文件中执行find_package,因为这两个库只是标题,只需在源文件中包含标题即可。

关于测试:他们也不适合我,但你实际上并不需要他们来使用这些文件。