From ab3e91ded7f8fb69c244231e2d6fe80a92070c37 Mon Sep 17 00:00:00 2001 From: open-license-manager <rillf@maildrop.cc> Date: 周一, 11 8月 2014 16:59:02 +0800 Subject: [PATCH] add boost --- build/modules/add_boost.cmake | 73 ++++++++++++++++++++++++++---------- 1 files changed, 52 insertions(+), 21 deletions(-) diff --git a/build/modules/add_boost.cmake b/build/modules/add_boost.cmake index 2de087d..9cbace8 100644 --- a/build/modules/add_boost.cmake +++ b/build/modules/add_boost.cmake @@ -150,13 +150,27 @@ # Expose BoostSourceDir to parent scope -set(BoostSourceDir ${BoostSourceDir} ) #PARENT_SCOPE +#set(BoostSourceDir ${BoostSourceDir} ) #PARENT_SCOPE +if(Boost_USE_STATIC_RUNTIME) + set(RUNTIME_LINK "static") + set(BOOST_LIB_SUFFIX "-s") +else() + set(RUNTIME_LINK "shared") + set(BOOST_LIB_SUFFIX "") +endif() +if(Boost_USE_STATIC_LIBS) + set(BOOST_LINK "static") + set(BOOST_LIB_EXTENSION "a") +else() + set(BOOST_LINK "shared") + set(BOOST_LIB_EXTENSION "so") +endif() # Set up general b2 (bjam) command line arguments -set(b2Args <SOURCE_DIR>/b2 - link=static +set(b2Args ./b2 + link=${BOOST_LINK} threading=multi - runtime-link=shared + runtime-link=${RUNTIME_LINK} --build-dir=Build stage -d+2 @@ -210,24 +224,31 @@ # Build each required component include(ExternalProject) foreach(Component ${BoostComponents}) - ExternalProject_Add( - boost_${Component} - PREFIX ${CMAKE_BINARY_DIR}/${BoostFolderName} - SOURCE_DIR ${BoostSourceDir} - BINARY_DIR ${BoostSourceDir} - CONFIGURE_COMMAND "" - BUILD_COMMAND "${b2Args}" --with-${Component} - INSTALL_COMMAND "" - LOG_BUILD ON - ) ms_underscores_to_camel_case(${Component} CamelCaseComponent) - add_library(Boost${CamelCaseComponent} STATIC IMPORTED GLOBAL) + add_library(Boost${CamelCaseComponent} SHARED + IMPORTED + GLOBAL) + if(${Component} STREQUAL "test") + set(LibName "unit_test_framework") + else() + set(LibName ${Component}) + endif() if(MSVC) if(MSVC11) set(CompilerName vc110) elseif(MSVC12) set(CompilerName vc120) endif() + ExternalProject_Add( + boost_${Component} + PREFIX ${CMAKE_BINARY_DIR}/${BoostFolderName} + SOURCE_DIR ${BoostSourceDir} + BINARY_DIR ${BoostSourceDir} + CONFIGURE_COMMAND "" + BUILD_COMMAND "${b2Args}" --with-${Component} + INSTALL_COMMAND "" + LOG_BUILD ON ) + string(REGEX MATCH "[0-9]_[0-9][0-9]" Version "${BoostFolderName}") set_target_properties(Boost${CamelCaseComponent} PROPERTIES IMPORTED_LOCATION_DEBUG ${BoostSourceDir}/stage/lib/libboost_${Component}-${CompilerName}-mt-gd-${Version}.lib @@ -236,13 +257,23 @@ IMPORTED_LOCATION_RELWITHDEBINFO ${BoostSourceDir}/stage/lib/libboost_${Component}-${CompilerName}-mt-${Version}.lib IMPORTED_LOCATION_RELEASENOINLINE ${BoostSourceDir}/stage/lib/libboost_${Component}-${CompilerName}-mt-${Version}.lib LINKER_LANGUAGE CXX) - else() - set_target_properties(Boost${CamelCaseComponent} PROPERTIES - IMPORTED_LOCATION ${BoostSourceDir}/stage/lib/libboost_${Component}-mt.a - LINKER_LANGUAGE CXX) - endif() + else(MSVC) + set(OUTPUT_FILE ${BoostSourceDir}/stage/lib/libboost_${LibName}-mt${BOOST_LIB_SUFFIX}.${BOOST_LIB_EXTENSION}) + add_custom_command(OUTPUT ${OUTPUT_FILE} + COMMAND ${b2Args} --with-${Component} + WORKING_DIRECTORY ${BoostSourceDir} + ) + add_custom_target(boost_${Component} + DEPENDS ${OUTPUT_FILE} + WORKING_DIRECTORY ${BoostSourceDir}) + set_target_properties(Boost${CamelCaseComponent} PROPERTIES + IMPORTED_LOCATION ${OUTPUT_FILE} + #LINK_SEARCH_START_STATIC OFF + LINKER_LANGUAGE CXX + ) + endif(MSVC) set_target_properties(boost_${Component} Boost${CamelCaseComponent} PROPERTIES - LABELS Boost FOLDER "Third Party/Boost" EXCLUDE_FROM_ALL TRUE) + LABELS Boost FOLDER "Boost" EXCLUDE_FROM_ALL TRUE) add_dependencies(Boost${CamelCaseComponent} boost_${Component}) set(Boost${CamelCaseComponent}Libs Boost${CamelCaseComponent}) if("${Component}" STREQUAL "locale") -- Gitblit v1.9.1