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