cmake_minimum_required(VERSION 2.8) set(TEST_PROJECT_NAME "cpputil_test") set(TEST_SERVER_PROJECT_NAME "server_test") set(TEST_CLIENT_PROJECT_NAME "client_test") set(SRC_DIR ".") set(REQUIRED_LIBRARIES cpputil) set(boost_version 1.56.0) set(boost_version_underscored 1_56_0) INCLUDE(ExternalProject) SET_DIRECTORY_PROPERTIES(PROPERTIES EP_PREFIX ${CMAKE_BINARY_DIR}/ThirdParty) ExternalProject_Add( googletest URL https://googletest.googlecode.com/files/gtest-1.7.0.zip TIMEOUT 100 CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=${CMAKE_SOURCE_DIR}/lib -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=${CMAKE_SOURCE_DIR}/lib #-Dgtest_force_shared_crt=ON -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} INSTALL_COMMAND "" LOG_DOWNLOAD ON LOG_CONFIGURE ON LOG_BUILD ON) ExternalProject_Get_Property(googletest source_dir) ExternalProject_Get_Property(googletest binary_dir) INCLUDE_DIRECTORIES(${source_dir}/include) if(CMAKE_BUILD_TYPE MATCHES RELEASE) set(boost_build_type "release") elseif(CMAKE_BUILD_TYPE MATCHES DEBUG) set(boost_build_type "debug") endif() ExternalProject_Add( boost URL http://switch.dl.sourceforge.net/project/boost/boost/${boost_version}/boost_${boost_version_underscored}.zip CONFIGURE_COMMAND ./bootstrap.sh --with-libraries=coroutine BUILD_COMMAND ./b2 --ignore-site-config --stagedir=${CMAKE_SOURCE_DIR} link=static threading=multi cxxflags=-std=c++11 ${boost_build_type} BUILD_IN_SOURCE 1 INSTALL_COMMAND "" LOG_DOWNLOAD ON LOG_CONFIGURE ON LOG_BUILD ON ) ExternalProject_Get_Property( boost source_dir ) set(BOOST_INCLUDE_DIR ${source_dir}) INCLUDE_DIRECTORIES(${BOOST_INCLUDE_DIR}) project(${TEST_PROJECT_NAME} CXX) aux_source_directory(${SRC_DIR}/cpputil TEST_SRC) add_executable(${TEST_PROJECT_NAME} ${TEST_SRC}) SET_TARGET_PROPERTIES(${TEST_PROJECT_NAME} PROPERTIES ENABLE_EXPORTS TRUE) ADD_DEPENDENCIES(${TEST_PROJECT_NAME} googletest cpputil) target_link_libraries(${TEST_PROJECT_NAME} ${REQUIRED_LIBRARIES} ${CMAKE_SOURCE_DIR}/lib/libgtest.a) project(${TEST_SERVER_PROJECT_NAME} CXX) aux_source_directory(${SRC_DIR}/server TEST_SERVER_SRC) add_executable(${TEST_SERVER_PROJECT_NAME} ${TEST_SERVER_SRC}) add_dependencies(${TEST_SERVER_PROJECT_NAME} boost cpputil) target_link_libraries(${TEST_SERVER_PROJECT_NAME} cpputil ${CMAKE_SOURCE_DIR}/lib/libboost_system.a ${CMAKE_SOURCE_DIR}/lib/libboost_coroutine.a) install(TARGETS ${TEST_PROJECT_NAME} RUNTIME DESTINATION bin ARCHIVE DESTINATION lib)