cmake_minimum_required(VERSION 3.20) # Automatisch Projektname aus Parent-Ordner set(PROJECT_NAME "conformallab_core") project(${PROJECT_NAME} LANGUAGES C CXX) message(STATUS "Configuring ${PROJECT_NAME}...") # Build-Setup set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type" FORCE) endif() # Compiler-Warnings & Optimierungen if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU") add_compile_options(-Wall -Wextra -Wpedantic) # AddressSanitizer nur im Debug if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_compile_options(-fsanitize=address -fno-omit-frame-pointer) add_link_options(-fsanitize=address) endif() endif() add_subdirectory(deps) add_subdirectory(deps/glfw-3.4) # --------- GLAD (global) --------- add_library(glad STATIC ${CMAKE_CURRENT_SOURCE_DIR}/deps/libigl-glad/src/glad.c) target_include_directories(glad PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/deps/libigl-glad/include) # --------- VIEWER Lib (separat → nur bei src/viewer/* Änderung gebaut!) --------- add_library(viewer STATIC src/viewer/simple_viewer.cpp) target_include_directories(VIEWER PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/deps/libigl-2.6.0/include ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/deps/libigl-glad/include ${CMAKE_CURRENT_SOURCE_DIR}/deps/eigen-3.4.0/ ) target_link_libraries(viewer PUBLIC glad glfw) # --------- Executable --------- add_executable(${PROJECT_NAME} src/apps/v0/conformallab_cli.cpp) target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/deps/single_includes ${CMAKE_CURRENT_SOURCE_DIR}/deps/eigen-3.4.0/ ${CMAKE_CURRENT_SOURCE_DIR}/deps/CGAL-6.1.1/include ${CMAKE_CURRENT_SOURCE_DIR}/deps/boost_1_90_0/ ${CMAKE_CURRENT_SOURCE_DIR}/deps/libigl-2.6.0/include # Core libigl ) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include) #-------- Compiler-Definitionen --------- target_compile_definitions(${PROJECT_NAME} PRIVATE CGAL_DISABLE_GMP CGAL_DISABLE_MPFR) target_link_libraries(${PROJECT_NAME} PRIVATE viewer) #--------- Output-Ordner --------- set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)