cmake_minimum_required(VERSION 3.20) # define project metadata project(exercise10 LANGUAGES C DESCRIPTION "exercise10" HOMEPAGE_URL "https://sgit.iue.tuwien.ac.at/360050/exercise10") # setting required language standards 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) # find math library and link to all targets find_library(MATH_LIBRARY m) link_libraries(${MATH_LIBRARY}) # get/setup dependencies include_directories(modules) # include own targets add_executable(task1 task1.main.c) target_link_libraries(task1 PRIVATE ${MATH_LIBRARY}) add_test(NAME task1 COMMAND task1 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) set_property(TEST task1 PROPERTY PASS_REGULAR_EXPRESSION ".*10.*") add_executable(task2 task2.c task2.test.c) target_link_libraries(task2 PRIVATE ${MATH_LIBRARY}) add_test(NAME task2 COMMAND task2 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) add_executable(task3_main task2.c task3.main.c) add_test(NAME task3_popt_fail COMMAND task3_main --left rrev4x4.csv --right matrix4x2.csv WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) add_test(NAME task3_inpath_fail COMMAND task3_main --left hui.csv --right matrix4x2.csv --out result.csv WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) add_test(NAME task3_dims_fail COMMAND task3_main --left matrix4x2.csv --right rrev4x4.csv --out result.csv WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) add_test(NAME task3_outpath_fail COMMAND task3_main --left rrev4x4.csv --right matrix4x2.csv --out hui/result.csv WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) add_test(NAME task3_csv_fail COMMAND task3_main --left rrev4x4.csv --right invalid.csv --out matrix4x2_rrow.csv WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) add_test(NAME task3_rrow COMMAND task3_main --left rrev4x4.csv --right matrix4x2.csv --out matrix4x2_rrow.csv WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) add_test(NAME task3_rcol COMMAND task3_main --left matrix4x2.csv --right rcol2x2.csv --out matrix4x2_rcols.csv WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) add_executable(task3_test task3.test.c) add_test(NAME task3_test COMMAND task3_test WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) set_tests_properties(task3_popt_fail task3_inpath_fail task3_dims_fail task3_outpath_fail task3_csv_fail PROPERTIES WILL_FAIL TRUE) set_tests_properties(task3_test PROPERTIES DEPENDS task3_rrow) set_tests_properties(task3_test PROPERTIES DEPENDS task3_rcol) add_custom_target(task3) add_dependencies(task3 task3_test task3_main)