comparison CMakeLists.txt @ 200:0a285d62ace7

windows: initial VS2017 support While here, do some cleanup in CMake files for a better hierarchy.
author David Demelier <markand@malikania.fr>
date Wed, 28 Nov 2018 22:01:55 +0100
parents 9ef01392a7f1
children 19f32bd3e568
comparison
equal deleted inserted replaced
199:9ef01392a7f1 200:0a285d62ace7
17 # 17 #
18 18
19 cmake_minimum_required(VERSION 3.0) 19 cmake_minimum_required(VERSION 3.0)
20 project(malikania) 20 project(malikania)
21 21
22 set_property(GLOBAL PROPERTY USE_FOLDERS On)
23
22 set(CMAKE_CXX_STANDARD 17) 24 set(CMAKE_CXX_STANDARD 17)
23 set(CMAKE_CXX_STANDARD_REQUIRED On) 25 set(CMAKE_CXX_STANDARD_REQUIRED On)
24 set(CMAKE_POSITION_INDEPENDENT_CODE On) 26 set(CMAKE_POSITION_INDEPENDENT_CODE On)
27 set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS On)
25 set(CMAKE_MODULE_PATH ${malikania_SOURCE_DIR}/cmake/packages) 28 set(CMAKE_MODULE_PATH ${malikania_SOURCE_DIR}/cmake/packages)
29 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
30
31 foreach (cfg ${CMAKE_CONFIGURATION_TYPES})
32 string(TOUPPER CFG ${cfg})
33 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CFG} ${CMAKE_BINARY_DIR}/bin/${cfg})
34 endforeach ()
26 35
27 include(cmake/function/MalikaniaBuildAssets.cmake) 36 include(cmake/function/MalikaniaBuildAssets.cmake)
28 include(cmake/function/MalikaniaDefineLibrary.cmake) 37 include(cmake/function/MalikaniaDefineLibrary.cmake)
29 include(cmake/function/MalikaniaDefineExample.cmake) 38 include(cmake/function/MalikaniaDefineExample.cmake)
30 include(cmake/function/MalikaniaDefineExecutable.cmake) 39 include(cmake/function/MalikaniaDefineExecutable.cmake)
47 add_subdirectory(tools) 56 add_subdirectory(tools)
48 add_subdirectory(examples) 57 add_subdirectory(examples)
49 add_subdirectory(extern) 58 add_subdirectory(extern)
50 add_subdirectory(doc) 59 add_subdirectory(doc)
51 add_subdirectory(libmlk) 60 add_subdirectory(libmlk)
52 add_subdirectory(libmlk-client)
53 add_subdirectory(libmlk-client-js)
54 add_subdirectory(libmlk-db)
55 add_subdirectory(libmlk-js) 61 add_subdirectory(libmlk-js)
56 add_subdirectory(libmlk-server)
57 add_subdirectory(mlk-client)
58 add_subdirectory(mlk-server)
59 62
60 if (WITH_TESTS) 63 if (MALIKANIA_HAS_SERVER)
64 add_subdirectory(libmlk-db)
65 add_subdirectory(libmlk-server)
66 add_subdirectory(mlk-server)
67 endif ()
68
69 if (MALIKANIA_HAS_CLIENT)
70 add_subdirectory(libmlk-client)
71 add_subdirectory(libmlk-client-js)
72 add_subdirectory(mlk-client)
73 endif ()
74
75 if (MALIKANIA_WITH_TESTS)
61 # Unit test libs. 76 # Unit test libs.
62 add_subdirectory(libmlk-db-test) 77 add_subdirectory(libmlk-db-test)
63 add_subdirectory(libmlk-js-test) 78 add_subdirectory(libmlk-js-test)
64 add_subdirectory(libmlk-client-js-test) 79 add_subdirectory(libmlk-client-js-test)
65 80
66 enable_testing() 81 enable_testing()
67 add_subdirectory(tests) 82 add_subdirectory(tests)
68 endif () 83 endif ()
69 84
70 # TODO: replace with FeatureSummary 85 message("")
71 message("Building information:") 86 message("Building information:")
72 message(" General flags: ${CMAKE_CXX_FLAGS}") 87 message(" General flags: ${CMAKE_CXX_FLAGS}")
73 message(" Debug flags: ${CMAKE_CXX_FLAGS_DEBUG}") 88 message(" Debug flags: ${CMAKE_CXX_FLAGS_DEBUG}")
74 message(" Release flags: ${CMAKE_CXX_FLAGS_RELEASE}") 89 message(" Release flags: ${CMAKE_CXX_FLAGS_RELEASE}")
75 message("") 90 message("")
91 message("Component selection:")
92 message(" Server: ${MALIKANIA_HAS_SERVER_MSG}")
93 message(" Client: ${MALIKANIA_HAS_CLIENT_MSG}")
94 message("")
76 message("Documentation:") 95 message("Documentation:")
77 message(" HTML: ${MALIKANIA_HAS_HTML_MSG}") 96 message(" HTML: ${MALIKANIA_HAS_HTML_MSG}")
78 message("") 97 message("")
79 message("Additional options:") 98 message("Additional options:")
80 message(" Tests: ${WITH_TESTS_MSG}") 99 message(" Tests: ${MALIKANIA_HAS_TESTS_MSG}")
100 message(" Examples: ${MALIKANIA_HAS_EXAMPLES_MSG}")
101 message("")