cmake_minimum_required(VERSION 3.15) # Projektname aus Ordner ableiten get_filename_component(PARENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/.." ABSOLUTE) get_filename_component(PROJECT_NAME "${PARENT_DIR}" NAME) project(${PROJECT_NAME} LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) # Build-Typ if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type" FORCE) endif() message(STATUS "CMake build type: ${CMAKE_BUILD_TYPE}") # Compiler-Flags (inkl. M1-Optimierung) if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU") message(STATUS "Using Clang/GCC warning flags") add_compile_options(-Wall -Wextra -Wpedantic) # AddressSanitizer im Debug set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3 -fsanitize=address -fno-omit-frame-pointer") # Release-Optimierung (inkl. optional M1) set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") if(APPLE) execute_process(COMMAND uname -m OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE) if(ARCH STREQUAL "arm64") # Wenn du lieber generisch bleiben willst: -march=native statt -mcpu=apple-m1 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mcpu=apple-m1") endif() endif() endif() # --------- Abhängigkeiten --------- include(FetchContent) FetchContent_Declare( Eigen GIT_REPOSITORY https://gitlab.com/libeigen/eigen.git GIT_TAG 3.3 GIT_SHALLOW TRUE GIT_PROGRESS TRUE ) set(EIGEN_BUILD_DOC OFF CACHE BOOL "" FORCE) set(BUILD_TESTING OFF CACHE BOOL "" FORCE) set(EIGEN_BUILD_PKGCONFIG OFF CACHE BOOL "" FORCE) FetchContent_MakeAvailable(Eigen) find_package(Boost REQUIRED) find_package(CGAL REQUIRED) add_subdirectory(deps/cgal) # --------- Quellen & Executable --------- set(SRCFILES ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp ) add_executable(${PROJECT_NAME} ${SRCFILES}) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/deps/single_includes ) target_link_libraries(${PROJECT_NAME} PRIVATE CGAL::CGAL Eigen3::Eigen ${Boost_LIBRARIES} )