81 lines
2.2 KiB
Plaintext
81 lines
2.2 KiB
Plaintext
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}
|
|
)
|