diff --git a/CMakeLists.txt b/CMakeLists.txt index 463cbc4..d8c4951 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,42 @@ cmake_minimum_required(VERSION 3.7.2) +if ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}") + message(FATAL_ERROR "In-source builds are disabled. + Please create a subfolder called build and use `cmake ..` inside it. + NOTE: cmake will now create CMakeCache.txt and CMakeFiles/*. + You must delete them, or cmake will refuse to work.") +endif() +set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "bin" "doc" "CMakeFiles" "lib" "include") + + project(GUI) set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_CLANG_TIDY "clang-tidy;-checks=*") +set(CMAKE_CXX_CLANG_TIDY clang-tidy;-header-filter=.;-checks=*;) + +file(GLOB_RECURSE SOURCES src/*.cpp) +file(GLOB_RECURSE HEADERS src/*.h) +file(GLOB_RECURSE TESTS test/*.cpp) + +set(LIB_PATH "${CMAKE_SOURCE_DIR}/../library") + +include_directories(${LIB_PATH}/include) add_executable(GUI ${SOURCES} ${HEADERS} main/main.cpp) +target_link_libraries(GUI ${LIB_PATH}/lib/liblibrary.a) + set(FLTK_SKIP_FLUID true) find_package(FLTK REQUIRED) include_directories(${FLTK_INCLUDE_DIR}) target_link_libraries(${PROJECT_NAME} ${FLTK_BASE_LIBRARY} ${FLTK_PLATFORM_DEPENDENT_LIBS}) +enable_testing() +find_package(Catch2 REQUIRED) +add_executable(UnitTests ${SOURCES} ${HEADERS} ${TESTS}) +target_link_libraries(UnitTests Catch2::Catch2) + +include(CTest) +include(Catch) +catch_discover_tests(UnitTests)