include(ExternalProject) # This function is used to force a build on a dependant project at cmake configuration phase. # function (build_external_project target prefix url) #FOLLOWING ARGUMENTS are the CMAKE_ARGS of ExternalProject_Add set(trigger_build_dir ${CMAKE_BINARY_DIR}/force_${target}) #mktemp dir in build tree file(MAKE_DIRECTORY ${trigger_build_dir} ${trigger_build_dir}/build) #generate false dependency project set(CMAKE_LIST_CONTENT " cmake_minimum_required(VERSION 2.8) include(ExternalProject) ExternalProject_add(${target} PREFIX ${prefix}/${target} GIT_REPOSITORY ${url} CMAKE_ARGS ${ARGN} INSTALL_COMMAND \"\" ) add_custom_target(trigger_${target}) add_dependencies(trigger_${target} ${target}) ") file(WRITE ${trigger_build_dir}/CMakeLists.txt "${CMAKE_LIST_CONTENT}") execute_process(COMMAND ${CMAKE_COMMAND} -G${CMAKE_GENERATOR} .. WORKING_DIRECTORY ${trigger_build_dir}/build ) execute_process(COMMAND ${CMAKE_COMMAND} --build . WORKING_DIRECTORY ${trigger_build_dir}/build ) execute_process(COMMAND ${CMAKE_COMMAND} --build . --target install WORKING_DIRECTORY ${trigger_build_dir}/build/${prefix}/${target}/src/${target}-build ) endfunction() SET(_BOOST_COMPONENTS program_options system filesystem thread) hunter_add_package(Boost COMPONENTS ${_BOOST_COMPONENTS}) find_package(Boost CONFIG REQUIRED ${_BOOST_COMPONENTS}) hunter_add_package(nlohmann_json) find_package(nlohmann_json CONFIG REQUIRED) hunter_add_package(GTest) find_package(GMock CONFIG REQUIRED) hunter_add_package(benchmark) find_package(benchmark CONFIG REQUIRED) hunter_add_package(spdlog) find_package(spdlog CONFIG REQUIRED) hunter_add_package(range-v3) find_package(range-v3 CONFIG REQUIRED) #hunter_add_package(PostgreSQL) #find_package(PostgreSQL REQUIRED) set(EXTERNAL_INSTALL_LOCATION ${CMAKE_BINARY_DIR}/lib CACHE STRING "external libs root path") set(EXTERNAL_LOCATION ${CMAKE_BINARY_DIR}/external CACHE STRING "external sources root path") set(_HUNTER_ROOT "${Boost_DIR}/../../../") message("HUNTER ROOT DIRECTORY ${_HUNTER_ROOT}") build_external_project(project_wt wt https://github.com/emweb/wt.git -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_INSTALL_PREFIX=${EXTERNAL_LOCATION} # -DSHARED_LIBS:BOOL=OFF -DBoost_NO_BOOST_CMAKE=TRUE -DBoost_NO_SYSTEM_PATHS=TRUE -DBOOST_ROOT:PATHNAME=${_HUNTER_ROOT} -DBOOST_INCLUDEDIR:FILEPATH=${_HUNTER_ROOT}/include -DBOOST_LIBRARYDIR:FILEPATH=${_HUNTER_ROOT}/lib # -DBoost_USE_STATIC_LIBS=TRUE -DBUILD_EXAMPLES=OFF -DINSTALL_RESOURCES=OFF -DENABLE_SSL=OFF -DENABLE_HARU=OFF -DENABLE_PANGO=OFF -DENABLE_SQLITE=OFF -DENABLE_POSTGRES=OFF -DENABLE_FIREBIRD=OFF -DENABLE_MYSQL=OFF -DENABLE_MSSQLSERVER=OFF -DENABLE_QT4=OFF -DENABLE_LIBWTDBO=OFF -DENABLE_OPENGL=OFF -DENABLE_UNWIND=OFF -DCONNECTOR_FCGI=OFF ) add_library(wt SHARED IMPORTED) set_target_properties(wt PROPERTIES IMPORTED_LOCATION ${EXTERNAL_LOCATION}/lib/libwt.so) add_dependencies(wt project_wt) add_library(wthttp SHARED IMPORTED) set_target_properties(wthttp PROPERTIES IMPORTED_LOCATION ${EXTERNAL_LOCATION}/lib/libwthttp.so) add_dependencies(wthttp project_wt) LIST(APPEND CMAKE_MODULE_PATH "${EXTERNAL_LOCATION}") build_external_project(project_hhdate date https://github.com/HowardHinnant/date.git -DCMAKE_INSTALL_PREFIX=${EXTERNAL_LOCATION} -DTZ_CXX_STANDARD=14 ) add_library(date INTERFACE IMPORTED) add_dependencies(date project_hhdate) build_external_project(project_sqlpp sqlpp https://github.com/rbock/sqlpp11.git -DCMAKE_INSTALL_PREFIX=${EXTERNAL_LOCATION} -DENABLE_TESTS=FALSE ) add_library(sqlpp INTERFACE IMPORTED) add_dependencies(sqlpp project_sqlpp) link_directories(${_HUNTER_ROOT}/lib) find_library(wt REQUIRED) find_library(wthttp REQUIRED) find_library(sqlpp REQUIRED)