cmake_minimum_required(VERSION 3.20) # define project metadata project(exercise3 LANGUAGES CXX C DESCRIPTION "exercise1" HOMEPAGE_URL "https://sgit.iue.tuwien.ac.at/360050/exercise1") # setting required language standards set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED True) set(CMAKE_C_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) # get/setup dependencies include_directories(modules) # include own targets find_package(Python3 COMPONENTS Interpreter REQUIRED) add_test(NAME task1_py COMMAND ${Python3_EXECUTABLE} task1.test.py WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) add_executable(task1_c task1.test.c) add_test(NAME task1_c COMMAND task1_c WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) add_executable(task1_cpp task1.test.cpp) add_test(NAME task1_cpp COMMAND task1_cpp WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) add_custom_target(task1) add_dependencies(task1 task1_c task1_cpp) add_executable(task2 task2.cpp) add_test(NAME task2 COMMAND task2 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) set_property(TEST task2 PROPERTY PROPERTY_REGULAR_EXPRESSION "6633") add_executable(task3 task3.cpp task3.test.cpp) add_test(NAME task3 COMMAND task3 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})