Building via the CI

Change-Id: Icf5840a020b76ccfa2cf2c7e759b4355abfac4fa
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6c72b8d..5fa2341 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,3 +2,34 @@
 cmake_minimum_required(VERSION 3.0)
 set(CMAKE_CXX_STANDARD 14)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+include(GNUInstallDirs)
+
+# Set a default build type if none was specified. This was shamelessly stolen
+# from VTK's cmake setup because these guys produce both CMake and a project that
+# manipulates this variable, and the web is full of posts where people say that
+# it is apparently evil to just set the build type in a way an earlier version of
+# this patch did. Oh, and the location of this check/update matters, apparently.
+#
+# Yes, this is just plain crazy.
+if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
+    message(STATUS "Setting build type to 'RelWithDebInfo' as none was specified.")
+    set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build." FORCE)
+    # Set the possible values of build type for cmake-gui
+    set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
+endif()
+
+# -Werror is not a default for sanity reasons (one cannot know what warnings a future compiler
+# might bring along), but it's a default in debug mode. The idea is that developers should care
+# about a warning-free build, and that this is easier than messing with yet another configure option.
+set(CMAKE_CXX_FLAGS_DEBUG "-Werror ${CMAKE_CXX_FLAGS_DEBUG}")
+
+# I don't want to duplicate the compiler's optimizations
+set(CMAKE_CXX_FLAGS "-O2 ${CMAKE_CXX_FLAGS}")
+
+# Build warnings are useful tools (and this project should be warning-free anyway), enable them on all
+# configurations. They are warnings, not errors.
+set(CMAKE_CXX_FLAGS "-Wall -Wextra -pedantic ${CMAKE_CXX_FLAGS}")
+
+find_package(docopt REQUIRED)
+find_package(spdlog REQUIRED)