cmake_minimum_required(VERSION 3.20) # define project metadata project(lab1 LANGUAGES CXX DESCRIPTION "lab1" HOMEPAGE_URL "https://sgit.iue.tuwien.ac.at/360050/lab1") # setting required language standards set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_CXX_EXTENSIONS OFF) # misc settings # avoid ctest dashboard targets set_property(GLOBAL PROPERTY CTEST_TARGETS_ADDED 1) # generate a compile_commands.json set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # make all symbols visible on windows (which is default on unix) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) # options option(BUILD_TESTING "enable testing with ctest" ON) # testing include(CTest) # global includes include_directories(modules) # include own targets add_executable(taskA taskA.cpp) add_test(NAME taskA COMMAND taskA WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) add_executable(taskB taskB.cpp) add_test(NAME taskB COMMAND taskB WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) add_executable(taskC taskC.cpp) add_test(NAME taskC COMMAND taskC WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})