CMakeList.txt
This commit is contained in:
80
code/CMakeList.txt
Normal file
80
code/CMakeList.txt
Normal 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}
|
||||
)
|
||||
Reference in New Issue
Block a user