diff 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
line wrap: on
line diff
--- a/CMakeLists.txt	Tue Oct 30 13:21:55 2018 +0100
+++ b/CMakeLists.txt	Wed Nov 28 22:01:55 2018 +0100
@@ -19,10 +19,19 @@
 cmake_minimum_required(VERSION 3.0)
 project(malikania)
 
+set_property(GLOBAL PROPERTY USE_FOLDERS On)
+
 set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_STANDARD_REQUIRED On)
 set(CMAKE_POSITION_INDEPENDENT_CODE On)
+set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS On)
 set(CMAKE_MODULE_PATH ${malikania_SOURCE_DIR}/cmake/packages)
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
+
+foreach (cfg ${CMAKE_CONFIGURATION_TYPES})
+	string(TOUPPER CFG ${cfg})
+	set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CFG} ${CMAKE_BINARY_DIR}/bin/${cfg})
+endforeach ()
 
 include(cmake/function/MalikaniaBuildAssets.cmake)
 include(cmake/function/MalikaniaDefineLibrary.cmake)
@@ -49,15 +58,21 @@
 add_subdirectory(extern)
 add_subdirectory(doc)
 add_subdirectory(libmlk)
-add_subdirectory(libmlk-client)
-add_subdirectory(libmlk-client-js)
-add_subdirectory(libmlk-db)
 add_subdirectory(libmlk-js)
-add_subdirectory(libmlk-server)
-add_subdirectory(mlk-client)
-add_subdirectory(mlk-server)
+
+if (MALIKANIA_HAS_SERVER)
+	add_subdirectory(libmlk-db)
+	add_subdirectory(libmlk-server)
+	add_subdirectory(mlk-server)
+endif ()
 
-if (WITH_TESTS)
+if (MALIKANIA_HAS_CLIENT)
+	add_subdirectory(libmlk-client)
+	add_subdirectory(libmlk-client-js)
+	add_subdirectory(mlk-client)
+endif ()
+
+if (MALIKANIA_WITH_TESTS)
 	# Unit test libs.
 	add_subdirectory(libmlk-db-test)
 	add_subdirectory(libmlk-js-test)
@@ -67,14 +82,20 @@
 	add_subdirectory(tests)
 endif ()
 
-# TODO: replace with FeatureSummary
+message("")
 message("Building information:")
 message("    General flags:     ${CMAKE_CXX_FLAGS}")
 message("    Debug flags:       ${CMAKE_CXX_FLAGS_DEBUG}")
 message("    Release flags:     ${CMAKE_CXX_FLAGS_RELEASE}")
 message("")
+message("Component selection:")
+message("    Server:            ${MALIKANIA_HAS_SERVER_MSG}")
+message("    Client:            ${MALIKANIA_HAS_CLIENT_MSG}")
+message("")
 message("Documentation:")
 message("    HTML:              ${MALIKANIA_HAS_HTML_MSG}")
 message("")
 message("Additional options:")
-message("    Tests:             ${WITH_TESTS_MSG}")
+message("    Tests:             ${MALIKANIA_HAS_TESTS_MSG}")
+message("    Examples:          ${MALIKANIA_HAS_EXAMPLES_MSG}")
+message("")