CMakeLists.txt 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. cmake_minimum_required(VERSION 2.8)
  2. project (crow_all)
  3. if(EXISTS "${CMAKE_BINARY_DIR}/conanbuildinfo.cmake")
  4. include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
  5. conan_basic_setup()
  6. endif()
  7. set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
  8. find_package(Tcmalloc)
  9. find_package(Threads)
  10. find_package(OpenSSL)
  11. if(OPENSSL_FOUND)
  12. include_directories(${OPENSSL_INCLUDE_DIR})
  13. endif()
  14. find_program(CCACHE_FOUND ccache)
  15. if(CCACHE_FOUND)
  16. message("Found ccache ${CCACHE_FOUND}")
  17. message("Using ccache to speed up compilation")
  18. set(ENV{CCACHE_CPP2} "yes")
  19. set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
  20. set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
  21. endif(CCACHE_FOUND)
  22. if (NOT CMAKE_BUILD_TYPE)
  23. message(STATUS "No build type selected, default to Release")
  24. set(CMAKE_BUILD_TYPE "Release")
  25. endif()
  26. if (MSVC)
  27. set(Boost_USE_STATIC_LIBS "On")
  28. find_package( Boost 1.52 COMPONENTS system thread regex REQUIRED )
  29. else()
  30. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++1y -pedantic -Wextra")
  31. find_package( Boost 1.52 COMPONENTS system thread REQUIRED )
  32. endif()
  33. include_directories( ${Boost_INCLUDE_DIR} )
  34. set(PROJECT_INCLUDE_DIR
  35. ${PROJECT_SOURCE_DIR}/include
  36. )
  37. include_directories("${PROJECT_INCLUDE_DIR}")
  38. include_directories("${PROJECT_SOURCE_DIR}")
  39. #add_subdirectory(src)
  40. add_subdirectory(examples)
  41. if (MSVC)
  42. else()
  43. add_subdirectory(tests)
  44. enable_testing()
  45. add_test(NAME crow_test COMMAND ${CMAKE_CURRENT_BINARY_DIR}/tests/unittest)
  46. add_test(NAME template_test COMMAND ${CMAKE_CURRENT_BINARY_DIR}/tests/template/test.py WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/tests/template)
  47. file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/amalgamate)
  48. add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/amalgamate/crow_all.h
  49. COMMAND python ${PROJECT_SOURCE_DIR}/amalgamate/merge_all.py ${PROJECT_SOURCE_DIR}/include
  50. COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/amalgamate/crow_all.h ${PROJECT_SOURCE_DIR}/amalgamate
  51. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/amalgamate
  52. DEPENDS ${PROJECT_SOURCE_DIR}/include/*.h ${PROJECT_SOURCE_DIR}/include/crow/*.h
  53. )
  54. add_custom_target(amalgamation ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/amalgamate/crow_all.h)
  55. endif()