如何使用cmake安装de b2命令行 我有一个使用Boost函数的C++代码。我想针对我的二进制文件安装boost和link。但是boost存储库没有cmake文件,我不能将此存储库用作子模块。我可以使用cmake安装boost。但总而言之,我有b2命令行。我知道b2命令行是一个python包
我的问题:可以使用cmake文件下载这个python包吗 编辑: 我现在知道如何使用b2命令安装de boost。但是,我只想安装文件系统库。boost目录有很多我不需要的内容。我有这个cmake文件,但我不知道如何仔细编辑以归档我的目标。我在stackoverflow中看到一个帖子,我可以这样做:如何使用cmake安装de b2命令行 我有一个使用Boost函数的C++代码。我想针对我的二进制文件安装boost和link。但是boost存储库没有cmake文件,我不能将此存储库用作子模块。我可以使用cmake安装boost。但总而言之,我有b2命令行。我知道b2命令行是一个python包,python,boost,cmake,Python,Boost,Cmake,我的问题:可以使用cmake文件下载这个python包吗 编辑: 我现在知道如何使用b2命令安装de boost。但是,我只想安装文件系统库。boost目录有很多我不需要的内容。我有这个cmake文件,但我不知道如何仔细编辑以归档我的目标。我在stackoverflow中看到一个帖子,我可以这样做: b2 tools/bcp mkdir/tmp/interprocess bcp interprocess /tmp/interprocess 但我不知道如何在cmake文件中创建这个命令行 cm
b2 tools/bcp
mkdir/tmp/interprocess
bcp interprocess /tmp/interprocess
但我不知道如何在cmake文件中创建这个命令行
cmake_minimum_required(VERSION 2.8)
include(ExternalProject)
# Download boost from git
SET (BOOST_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/boost/src/boost/lib/filesystem/include/boost/)
SET (BOOST_URL https://github.com/google/re2.git)
SET (BOOST_BUILD ${CMAKE_BINARY_DIR}/boost/src/boost)
get_filename_component(BOOST_STATIC_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/lib/libboost_filesystem.a ABSOLUTE)
SET (BOOST_INCLUDES ${RE2_BUILD})
if ( UNIX )
SET (BOOST_STATIC_LIBRARIES ${BOOST_BUILD}/libboost_filesystem.a)
endif ()
ExternalProject_Add(
boost
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/boost
GIT_REPOSITORY https://github.com/boostorg/boost.git
UPDATE_COMMAND ./bootstrap.sh --with-libraries=filesystem
CONFIGURE_COMMAND ""
BUILD_COMMAND ./b2 tools/bcp link=static install --prefix=${CMAKE_CURRENT_BINARY_DIR}/
BUILD_IN_SOURCE 1
INSTALL_COMMAND ""
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR/include/boost
})
set(Boost_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/include/boost)
set(Boost_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/lib/ibboost_filesystem.a)
我的cmake文件
cmake_minimum_required(VERSION 2.8)
include(ExternalProject)
# Download boost from git
SET (BOOST_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/boost/src/boost/lib/filesystem/include/boost/)
SET (BOOST_URL https://github.com/google/re2.git)
SET (BOOST_BUILD ${CMAKE_BINARY_DIR}/boost/src/boost)
get_filename_component(BOOST_STATIC_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/lib/libboost_filesystem.a ABSOLUTE)
SET (BOOST_INCLUDES ${RE2_BUILD})
if ( UNIX )
SET (BOOST_STATIC_LIBRARIES ${BOOST_BUILD}/libboost_filesystem.a)
endif ()
ExternalProject_Add(
boost
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/boost
GIT_REPOSITORY https://github.com/boostorg/boost.git
UPDATE_COMMAND ./bootstrap.sh --with-libraries=filesystem
CONFIGURE_COMMAND ""
BUILD_COMMAND ./b2 tools/bcp link=static install --prefix=${CMAKE_CURRENT_BINARY_DIR}/
BUILD_IN_SOURCE 1
INSTALL_COMMAND ""
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR/include/boost
})
set(Boost_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/include/boost)
set(Boost_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/lib/ibboost_filesystem.a)
编辑
伙计们,我想通过使用git子模块来实现这一点。
我想使用boost使用子模块。但是boost有很多子模块,我只想从boost中获得boost.filesystem所必需的子模块
但是,当我在项目中使用boost作为子模块并尝试在cmake文件中包含boost目录时,会发生以下错误:
CMake Error at CMakeLists.txt:16 (add_subdirectory):
The source directory
/home/lais/testeBoost/lib/boost
does not contain a CMakeLists.txt file.
ExternalProject\u add
可以处理自定义配置、生成和安装命令。只需定义configure以使用bootstrap
命令(构建b2)和build命令以使用b2
命令。好的,b2不需要python。好的,谢谢你的帮助。我想这是对的。还有一个疑问:是否可以指定我要克隆boost中的哪个子模块?因为我只会使用filesystem.a(静态库),克隆所有东西、构建和安装需要很长时间。下载源代码tarball,构建bcp
工具,使用bcp
提取文件系统及其依赖项,并使用bootstrap
和b2
仅构建和安装它们。我编辑了我的问题。