CMakeList.txt

This commit is contained in:
Tarik Moussa
2026-02-09 21:30:36 +02:00
parent a140f439a6
commit 119601d639

80
code/CMakeList.txt Normal file
View File

@@ -0,0 +1,80 @@
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}
)