algorithm-engineering/CMakeLists.txt
2025-09-26 14:33:16 +02:00

102 lines
2.8 KiB
CMake
Executable File

cmake_minimum_required(VERSION 3.19)
project(AlgEng-Uebung)
find_package(Threads REQUIRED)
add_executable(Sorter framework/runner.cpp
src/container.cpp src/container.hpp
src/sorter.cpp src/sorter.hpp
src/thread_pool.cpp src/thread_pool.hpp
src/single_task_handler.cpp src/single_task_handler.hpp
src/task_handler.hpp
)
target_link_libraries(Sorter PUBLIC Threads::Threads)
target_compile_features(Sorter PRIVATE cxx_std_20)
find_package(
Python
COMPONENTS Interpreter
REQUIRED)
set(result_file ${CMAKE_CURRENT_LIST_DIR}/result.txt)
add_custom_command(
OUTPUT ${result_file}
COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/eval.py run
--build-dir ${CMAKE_CURRENT_BINARY_DIR} ${result_file}
COMMENT "Running experiment"
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
DEPENDS Sorter eval.py)
add_custom_target(run DEPENDS ${result_file})
set(plot_file ${CMAKE_CURRENT_LIST_DIR}/plot.pdf)
add_custom_command(
OUTPUT ${plot_file}
COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/eval.py plot
${result_file}
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
COMMENT "Plotting results"
DEPENDS ${result_file} eval.py)
add_custom_target(plot DEPENDS ${plot_file})
set(submission_file ${CMAKE_CURRENT_LIST_DIR}/submission.zip)
add_custom_command(
OUTPUT ${submission_file}
COMMAND
${CMAKE_COMMAND} -E tar cv ${submission_file} --format=zip
${CMAKE_CURRENT_LIST_DIR}/src/container.cpp
${CMAKE_CURRENT_LIST_DIR}/src/container.hpp
${CMAKE_CURRENT_LIST_DIR}/src/sorter.cpp
${CMAKE_CURRENT_LIST_DIR}/src/sorter.hpp
${CMAKE_CURRENT_LIST_DIR}/src/thread_pool.cpp
${CMAKE_CURRENT_LIST_DIR}/src/thread_pool.hpp
${CMAKE_CURRENT_LIST_DIR}/src/src/single_task_handler.cpp
${CMAKE_CURRENT_LIST_DIR}/src/src/single_task_handler.hpp
${CMAKE_CURRENT_LIST_DIR}/src/src/task_handler.hpp
${plot_file}
${CMAKE_CURRENT_LIST_DIR}/description.md
COMMENT "Creating submission"
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
DEPENDS ${plot_file} ${CMAKE_CURRENT_LIST_DIR}/description.md)
add_custom_target(submission DEPENDS ${submission_file})
set(dist_file_list
CMakeLists.txt
CMakePresets.json
description.md
eval.py
framework/runner.cpp
Pipfile
README.md
src/container.cpp
src/container.hpp
src/sorter.cpp
src/sorter.hpp
src/thread_pool.cpp
src/thread_pool.hpp
src/single_task_handler.cpp
src/single_task_handler.hpp
src/task_handler.hpp
)
set(framework_dist_file "ae-sorting.zip")
add_custom_command(
OUTPUT ${framework_dist_file}
COMMAND
${CMAKE_COMMAND} -E tar cv ${framework_dist_file} --format=zip
${dist_file_list}
COMMENT "Creating framework dist archive"
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
)
add_custom_target(framework DEPENDS ${framework_dist_file})