Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.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+中包含Boost库+;使用CMake的跨平台项目 我需要在一个使用CMADE作为构建管理系统的C++项目中包含一个Boost库(具体是代码>上下文< /代码>)。 由于给定存储库的源代码,项目需要使用cmake和make构建,而目标系统(unix、windows或其他任何系统)中没有任何其他软件或库安装,因此我需要配置cmake从我的存储库获取Boost源代码,并对其进行编译,并将其链接到我的项目,而无需在目标系统中单独安装Boost库。 这是否可行?_C++_Boost_Build_Cmake_Compilation - Fatal编程技术网

在C+中包含Boost库+;使用CMake的跨平台项目 我需要在一个使用CMADE作为构建管理系统的C++项目中包含一个Boost库(具体是代码>上下文< /代码>)。 由于给定存储库的源代码,项目需要使用cmake和make构建,而目标系统(unix、windows或其他任何系统)中没有任何其他软件或库安装,因此我需要配置cmake从我的存储库获取Boost源代码,并对其进行编译,并将其链接到我的项目,而无需在目标系统中单独安装Boost库。 这是否可行?

在C+中包含Boost库+;使用CMake的跨平台项目 我需要在一个使用CMADE作为构建管理系统的C++项目中包含一个Boost库(具体是代码>上下文< /代码>)。 由于给定存储库的源代码,项目需要使用cmake和make构建,而目标系统(unix、windows或其他任何系统)中没有任何其他软件或库安装,因此我需要配置cmake从我的存储库获取Boost源代码,并对其进行编译,并将其链接到我的项目,而无需在目标系统中单独安装Boost库。 这是否可行?,c++,boost,build,cmake,compilation,C++,Boost,Build,Cmake,Compilation,是的,您可以使用ExternalProject\u Add,请参阅 查看下面的链接,了解编译boost的用法示例 HTHCMake有一个特定的模块用于处理boost`库,请参阅 CMakeLists.txt文件通常包含类似以下内容,以链接到boost库: find_package(Boost REQUIRED COMPONENTS context ) if(Boost_FOUND) target_include_directories(${PROJECT_NAME} PRIVATE ${B

是的,您可以使用ExternalProject\u Add,请参阅

查看下面的链接,了解编译boost的用法示例


HTH

CMake
有一个特定的模块用于处理boost`库,请参阅

CMakeLists.txt
文件通常包含类似以下内容,以链接到
boost
库:

find_package(Boost REQUIRED COMPONENTS context )
if(Boost_FOUND)
  target_include_directories(${PROJECT_NAME} PRIVATE ${Boost_INCLUDE_DIRS})

  target_link_libraries(${PROJECT_NAME} INTERFACE Boost::context)
endif(Boost_FOUND)
这将只链接
boost::context
库。您必须按照@Hugo的答案中的建议构建boost::context lib文件,从类似的地方下载它们,或者使用包管理器在linux上安装它们

如果
上下文
仅为
标题
,则只需要:

find_package(Boost REQUIRED COMPONENTS boost)
if(Boost_FOUND)
  target_include_directories(${PROJECT_NAME} PRIVATE ${Boost_INCLUDE_DIRS})
endif(Boost_FOUND)

在任何一种情况下,您都可以在项目中包含
boost::context
文件,然后按照文档中的描述设置变量
boost\u ROOT
boost\u INCLUDEDIR

这绝对是可能的(我每天都使用这样配置的构建系统),但是我没有设置它,所以很遗憾,我不能说它是如何完成的。你说的
从我的存储库中获取Boost的源代码是什么意思?下载boost?或者使用存储库中包含的标题?@eozd我的意思是项目应该是自包含的。由于在目标系统中,项目应该使用cmake构建,我想Boost库的源代码必须与源代码一起包含在我的存储库中,以便它们可以一起编译。我知道FindBoost模块在系统上查找Boost库,作为二进制文件,而不是源代码。另外,上下文不是这里描述的唯一标题:无论如何,我昨天一整天都在尝试使用FindBoost,但没有取得好的效果。对不起@Archimedis,我认为
boost::Context
只是标题,因为尽管设置为
build all
,但我的系统没有构建它。。。我已经编辑了我的答案,并为您提供了一些不同的方法来获取boost上下文的二进制文件。嗯