Skip to content

Instantly share code, notes, and snippets.

@matlabbe
Last active April 17, 2021 17:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matlabbe/0bce8feeb73a499a76afbbcc5c687221 to your computer and use it in GitHub Desktop.
Save matlabbe/0bce8feeb73a499a76afbbcc5c687221 to your computer and use it in GitHub Desktop.
Minimal Boost CMake
set(Boost_INCLUDE_DIRS @Boost_INCLUDE_DIRS@)
set(Boost_LIBRARIES @Boost_LIBRARIES@)
link_directories(@Boost_LINK_DIRS@)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} @Boost_C_FLAGS@")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} @Boost_CXX_FLAGS@")
cmake_minimum_required(VERSION 2.8)
project(android-boost)
IF(${CMAKE_GENERATOR} MATCHES ".*Makefiles")
IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
set(CMAKE_BUILD_TYPE Release)
ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
ENDIF(${CMAKE_GENERATOR} MATCHES ".*Makefiles")
OPTION( BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON )
set(boost_root ${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNO_BZIP2" )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNO_BZIP2")
include_directories(${boost_root} )
file(GLOB lib_srcs ${boost_root}/libs/system/src/*.cpp)
add_library( boost_system ${lib_srcs})
file(GLOB lib_srcs ${boost_root}/libs/filesystem/src/*.cpp)
add_library( boost_filesystem ${lib_srcs})
target_link_libraries(boost_filesystem boost_system)
set(lib_dir ${boost_root}/libs/iostreams/src)
set(lib_srcs ${lib_dir}/file_descriptor.cpp ${lib_dir}/gzip.cpp ${lib_dir}/mapped_file.cpp ${lib_dir}/zlib.cpp)
add_library( boost_iostreams ${lib_srcs})
target_link_libraries(boost_iostreams -lz)
file(GLOB lib_srcs ${boost_root}/libs/program_options/src/*.cpp)
add_library( boost_program_options ${lib_srcs})
file(GLOB lib_srcs ${boost_root}/libs/regex/src/*.cpp)
add_library( boost_regex ${lib_srcs})
file(GLOB lib_srcs ${boost_root}/libs/signals/src/*.cpp)
add_library( boost_signals ${lib_srcs})
if(BUILD_SHARED_LIBS)
set(lib_srcs ${boost_root}/libs/thread/src/pthread/once_atomic.cpp ${boost_root}/libs/thread/src/pthread/thread.cpp)
else()
file(GLOB lib_srcs ${boost_root}/libs/thread/src/pthread/*.cpp)
endif()
add_library( boost_thread ${lib_srcs})
target_link_libraries(boost_thread boost_system)
file(GLOB lib_srcs ${boost_root}/libs/chrono/src/*.cpp)
add_library( boost_chrono ${lib_srcs})
target_link_libraries(boost_chrono boost_system)
file(GLOB lib_srcs ${boost_root}/libs/date_time/src/gregorian/*.cpp ${boost_root}/libs/date_time/src/posix_time/*.cpp)
add_library( boost_date_time ${lib_srcs})
## For serialization, based on libs/serialization/CMake/CMakeLists.txt
set( lib_srcs
${boost_root}/libs/serialization/src/archive_exception.cpp
${boost_root}/libs/serialization/src/basic_archive.cpp
${boost_root}/libs/serialization/src/basic_iarchive.cpp
${boost_root}/libs/serialization/src/basic_iserializer.cpp
${boost_root}/libs/serialization/src/basic_oarchive.cpp
${boost_root}/libs/serialization/src/basic_oserializer.cpp
${boost_root}/libs/serialization/src/basic_pointer_iserializer.cpp
${boost_root}/libs/serialization/src/basic_pointer_oserializer.cpp
${boost_root}/libs/serialization/src/basic_serializer_map.cpp
${boost_root}/libs/serialization/src/basic_text_iprimitive.cpp
${boost_root}/libs/serialization/src/basic_text_oprimitive.cpp
${boost_root}/libs/serialization/src/basic_xml_archive.cpp
${boost_root}/libs/serialization/src/binary_iarchive.cpp
${boost_root}/libs/serialization/src/binary_oarchive.cpp
${boost_root}/libs/serialization/src/codecvt_null.cpp
${boost_root}/libs/serialization/src/extended_type_info_no_rtti.cpp
${boost_root}/libs/serialization/src/extended_type_info_typeid.cpp
${boost_root}/libs/serialization/src/extended_type_info.cpp
${boost_root}/libs/serialization/src/polymorphic_iarchive.cpp
${boost_root}/libs/serialization/src/polymorphic_oarchive.cpp
${boost_root}/libs/serialization/src/stl_port.cpp
${boost_root}/libs/serialization/src/text_iarchive.cpp
${boost_root}/libs/serialization/src/text_oarchive.cpp
${boost_root}/libs/serialization/src/utf8_codecvt_facet.cpp
${boost_root}/libs/serialization/src/void_cast.cpp
${boost_root}/libs/serialization/src/xml_archive_exception.cpp
${boost_root}/libs/serialization/src/xml_iarchive.cpp
${boost_root}/libs/serialization/src/xml_oarchive.cpp
${boost_root}/libs/serialization/src/xml_grammar.cpp
)
add_library( boost_serialization ${lib_srcs})
target_link_libraries(boost_serialization boost_system boost_filesystem)
file(GLOB lib_srcs ${boost_root}/libs/timer/src/*.cpp)
add_library( boost_timer ${lib_srcs})
target_link_libraries(boost_timer boost_system boost_chrono)
set(Boost_INCLUDE_DIRS ${boost_root})
set(Boost_LIBRARIES boost_filesystem boost_system boost_program_options boost_iostreams boost_date_time boost_chrono boost_serialization boost_regex boost_thread)
set(Boost_LINK_DIRS ${LIBRARY_OUTPUT_PATH})
configure_file(${CMAKE_SOURCE_DIR}/BoostConfig.cmake.in
${CMAKE_BINARY_DIR}/BoostConfig.cmake @ONLY)
install(DIRECTORY ${boost_root}/boost DESTINATION ${CMAKE_INSTALL_PREFIX}/include)
install(TARGETS boost_system DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
install(TARGETS boost_filesystem DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
install(TARGETS boost_program_options DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
install(TARGETS boost_iostreams DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
install(TARGETS boost_regex DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
install(TARGETS boost_timer DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
install(TARGETS boost_signals DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
install(TARGETS boost_thread DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
install(TARGETS boost_date_time DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
install(TARGETS boost_chrono DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
install(TARGETS boost_serialization DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment