66 lines
2.3 KiB
CMake
66 lines
2.3 KiB
CMake
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)
|
|
|
|
|
|
|