|
1 | | -CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12.1) |
2 | | -project(ics3 CXX) |
3 | | - |
4 | | -SET(PROJECT_VER_MAJOR 1) |
5 | | -SET(PROJECT_VER_MINOR 2) |
6 | | -SET(PROJECT_VER_PATCH 6) |
7 | | -SET(PROJECT_VER "${PROJECT_VER_MAJOR}.${PROJECT_VER_MINOR}.${PROJECT_VER_PATCH}") |
8 | | -SET(PROJECT_APIVER "${PROJECT_VER_MAJOR}.${PROJECT_VER_MINOR}") |
9 | | - |
10 | | -IF(NOT DEFINED CMAKE_BUILD_TYPE) |
11 | | - # No effect for multi-configuration generators (e.g. for Visual Studio) |
12 | | - SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose: RelWithDebInfo Release Debug MinSizeRel None") |
13 | | -ENDIF() |
14 | | - |
15 | | -SET(MY_DIR ${ics3_SOURCE_DIR}) |
16 | | - |
17 | | -OPTION(BUILD_SHARED_LIBS "Build shared (ON) or static (OFF) libraries" ON) |
18 | | -OPTION(ENABLE_CXX11 "Enable C++11 support" ON) |
19 | | - |
20 | | -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") |
21 | | - |
22 | | -SET(HAVE_CXX11 disabled) |
23 | | -IF(ENABLE_CXX11) |
24 | | - INCLUDE(CheckCXXCompilerFlag) |
25 | | - CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) |
26 | | - CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) |
27 | | - IF(COMPILER_SUPPORTS_CXX11) |
28 | | - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") |
29 | | - SET(LIBICS3_WITH_CXX11_SUPPORT 1) |
30 | | - SET(HAVE_CXX11 yes) |
31 | | - ELSEIF(COMPILER_SUPPORTS_CXX0X) |
32 | | - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") |
33 | | - SET(HAVE_CXX11 c++0x) |
34 | | - ELSE() |
35 | | - SET(HAVE_CXX11 no) |
36 | | - MESSAGE(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") |
37 | | - ENDIF() |
38 | | -ENDIF(ENABLE_CXX11) |
| 1 | +cmake_minimum_required(VERSION 2.8.12.1) |
| 2 | +project(ics3 C CXX) |
| 3 | + |
| 4 | +set(PROJECT_VER_MAJOR 1) |
| 5 | +set(PROJECT_VER_MINOR 3) |
| 6 | +set(PROJECT_VER_PATCH 0) |
| 7 | +set(PROJECT_VER "${PROJECT_VER_MAJOR}.${PROJECT_VER_MINOR}.${PROJECT_VER_PATCH}") |
| 8 | +set(PROJECT_APIVER "${PROJECT_VER_MAJOR}.${PROJECT_VER_MINOR}") |
| 9 | + |
| 10 | +if(NOT DEFINED CMAKE_BUILD_TYPE) |
| 11 | + set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose: RelWithDebInfo Release Debug MinSizeRel None") |
| 12 | +endif() |
| 13 | + |
| 14 | +option(BUILD_SHARED_LIBS "Build shared (ON) or static (OFF) libraries" ON) |
| 15 | +option(ENABLE_TEST "Enable test program building" OFF) |
| 16 | + |
| 17 | +set(MY_DIR ${ics3_SOURCE_DIR}) |
| 18 | + |
| 19 | +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") |
| 20 | + |
| 21 | +include(CheckCXXCompilerFlag) |
| 22 | +CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) |
| 23 | +CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) |
| 24 | +if(COMPILER_SUPPORTS_CXX11) |
| 25 | + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") |
| 26 | +elseif(COMPILER_SUPPORTS_CXX0X) |
| 27 | + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") |
| 28 | +else() |
| 29 | + message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") |
| 30 | +endif() |
39 | 31 |
|
40 | 32 | #set the default path for built executables to the "bin" directory |
41 | | -SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) |
| 33 | +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) |
42 | 34 |
|
43 | 35 | #set the default path for built libraries to the "lib" directory |
44 | | -SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) |
45 | | -SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) |
| 36 | +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) |
| 37 | +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) |
46 | 38 |
|
47 | 39 | # Add includes |
48 | | -INCLUDE_DIRECTORIES( |
49 | | - "${MY_DIR}/include" |
50 | | - ${PROJECT_BINARY_DIR} # for generated headers |
| 40 | +include_directories( |
| 41 | + ${MY_DIR}/include |
51 | 42 | ) |
52 | 43 |
|
53 | | -FILE(GLOB ICS3_SOURCES |
| 44 | +file(GLOB ICS3_SOURCES |
54 | 45 | ${MY_DIR}/src/*.cpp |
55 | 46 | ) |
56 | 47 |
|
57 | | -LIST(REMOVE_ITEM ICS3_SOURCES ${MY_DIR}/src/test.cpp) |
58 | | - |
59 | | -FILE(GLOB ICS3_HEADERS |
| 48 | +file(GLOB ICS3_HEADERS |
60 | 49 | ${MY_DIR}/include/ics3/*.hpp |
61 | 50 | ${MY_DIR}/include/core.hpp |
62 | 51 | ) |
63 | 52 |
|
64 | | -SET(SOURCES |
| 53 | +set(SOURCES |
65 | 54 | ${ICS3_HEADERS} |
66 | 55 | ${ICS3_SOURCES} |
67 | 56 | ) |
68 | 57 |
|
69 | | -ADD_LIBRARY(ics3 ${SOURCES}) |
70 | | -SET_TARGET_PROPERTIES(ics3 PROPERTIES |
| 58 | +add_library(ics3 ${SOURCES}) |
| 59 | +set_target_properties(ics3 PROPERTIES |
71 | 60 | VERSION ${PROJECT_VER} |
72 | 61 | SOVERSION ${PROJECT_APIVER} |
73 | 62 | ) |
74 | 63 |
|
75 | | -TARGET_LINK_LIBRARIES(ics3) |
76 | | -INSTALL(TARGETS ics3 DESTINATION lib RUNTIME DESTINATION bin) |
77 | | -INSTALL(DIRECTORY "${MY_DIR}/include/${PROJECT_NAME}" DESTINATION include) |
78 | | - |
79 | | -GET_CMAKE_PROPERTY(vars VARIABLES) |
80 | | -MESSAGE(STATUS "Feature list:") |
81 | | -FOREACH(var ${vars}) |
82 | | - IF(var MATCHES ^HAVE_) |
83 | | - STRING(REPLACE HAVE_ "" feature ${var}) |
84 | | - MESSAGE(STATUS " ${feature} ${${var}}") |
85 | | - ENDIF() |
86 | | -ENDFOREACH() |
| 64 | +target_link_libraries(ics3) |
| 65 | + |
| 66 | +if(ENABLE_TEST) |
| 67 | + set(GTEST_ROOT ${MY_DIR}/thirdpatry/googletest/googletest) |
| 68 | + find_package(GTest REQUIRED) |
| 69 | + find_package(Threads) |
| 70 | + |
| 71 | + include_directories(${GTEST_INCLUDE_DIRS}) |
| 72 | + add_executable(integrate test/integrate.cpp) |
| 73 | + target_link_libraries(integrate ics3 ${GTEST_BOTH_LIBRARIES}) |
| 74 | + if(THREADS_HAVE_PTHREAD_ARG) |
| 75 | + target_compile_options(PUBLIC integrate "-pthread") |
| 76 | + endif() |
| 77 | + if(CMAKE_THREAD_LIBS_INIT) |
| 78 | + target_link_libraries(integrate "${CMAKE_THREAD_LIBS_INIT}") |
| 79 | + endif() |
| 80 | + |
| 81 | + enable_testing() |
| 82 | + add_test(AllTestInIntegrate ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/integrate) |
| 83 | +endif() |
| 84 | + |
| 85 | +install(TARGETS ics3 DESTINATION lib RUNTIME DESTINATION bin) |
| 86 | +install(DIRECTORY "${MY_DIR}/include/${PROJECT_NAME}" DESTINATION include) |
| 87 | + |
| 88 | +get_cmake_property(vars VARIABLES) |
| 89 | +message(STATUS "Feature list:") |
| 90 | +foreach(var ${vars}) |
| 91 | + if(var MATCHES ^HAVE_) |
| 92 | + string(REPLACE HAVE_ "" feature ${var}) |
| 93 | + message(STATUS " ${feature} ${${var}}") |
| 94 | + endif() |
| 95 | +endforeach() |
0 commit comments