我需要在使用CMAKE作为构建管理系统的C ++项目中包含一个Boost库(特别是Context
)。
因为,鉴于存储库的源代码,项目需要使用cmake
和make
构建,而无需在目标系统中安装任何其他软件或库(unix,windows或其他),我需要配置Cmake从我的存储库中获取Boost的源代码,编译它,并将其链接到我的项目,而无需在分离的步骤中在目标系统中安装Boost库。
这可行吗?
答案 0 :(得分:0)
是的,您可以使用ExternalProject_Add,请参阅https://cmake.org/cmake/help/latest/module/ExternalProject.html
上的文档请查看下面的链接,了解编译boost
的使用示例https://github.com/arnaudgelas/ExternalProject/blob/master/External-Boost.cmake
HTH
答案 1 :(得分:0)
CMake
有一个用于处理boost`库的特定模块,请参阅FindBoost。
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文件,从here这样的地方下载它们,或者使用包管理器在linux上安装它们。
如果Context
为header only
,则只需要:
find_package(Boost REQUIRED COMPONENTS boost)
if(Boost_FOUND)
target_include_directories(${PROJECT_NAME} PRIVATE ${Boost_INCLUDE_DIRS})
endif(Boost_FOUND)
在任何一种情况下,您都可以在项目中包含boost::context
个文件,然后按照FindBoost文档中的说明设置变量BOOST_ROOT
或BOOST_INCLUDEDIR
。