# examples/CMakeLists.txt # # Example programs for conformallab++. # All examples require -DWITH_CGAL=ON. # example_viewer additionally requires -DWITH_VIEWER=ON. # # Run after building: # ./build/examples/example_euclidean [input.off] [output.off] # ./build/examples/example_hyper_ideal [input.off] [output.off] # ./build/examples/example_viewer [input.off] (requires WITH_VIEWER) # ── Shared include paths for all examples ───────────────────────────────────── set(EXAMPLE_INCLUDES ${CMAKE_SOURCE_DIR}/deps/eigen-3.4.0 ${CMAKE_SOURCE_DIR}/deps/CGAL-6.1.1/include ${CMAKE_SOURCE_DIR}/deps/single_includes ${Boost_INCLUDE_DIRS} ) set(EXAMPLE_PRIVATE_INCLUDES ${CMAKE_SOURCE_DIR}/include ) set(EXAMPLE_DEFS CGAL_DISABLE_GMP CGAL_DISABLE_MPFR ) # ── example_euclidean ───────────────────────────────────────────────────────── add_executable(example_euclidean example_euclidean.cpp) target_include_directories(example_euclidean SYSTEM PRIVATE ${EXAMPLE_INCLUDES}) target_include_directories(example_euclidean PRIVATE ${EXAMPLE_PRIVATE_INCLUDES}) target_compile_definitions(example_euclidean PRIVATE ${EXAMPLE_DEFS}) # ── example_hyper_ideal ─────────────────────────────────────────────────────── add_executable(example_hyper_ideal example_hyper_ideal.cpp) target_include_directories(example_hyper_ideal SYSTEM PRIVATE ${EXAMPLE_INCLUDES}) target_include_directories(example_hyper_ideal PRIVATE ${EXAMPLE_PRIVATE_INCLUDES}) target_compile_definitions(example_hyper_ideal PRIVATE ${EXAMPLE_DEFS}) # ── example_layout ─────────────────────────────────────────────────────────── add_executable(example_layout example_layout.cpp) target_include_directories(example_layout SYSTEM PRIVATE ${EXAMPLE_INCLUDES}) target_include_directories(example_layout PRIVATE ${EXAMPLE_PRIVATE_INCLUDES}) target_compile_definitions(example_layout PRIVATE ${EXAMPLE_DEFS}) # ── example_flatten (primary use case: real conformal flattening) ───────────── # Demonstrates Θ_v = 2π → non-trivial conformal map; contrast with # example_euclidean which uses "natural theta" (u_v ≈ 0, testing trick). add_executable(example_flatten example_flatten.cpp) target_include_directories(example_flatten SYSTEM PRIVATE ${EXAMPLE_INCLUDES}) target_include_directories(example_flatten PRIVATE ${EXAMPLE_PRIVATE_INCLUDES}) target_compile_definitions(example_flatten PRIVATE ${EXAMPLE_DEFS}) # ── example_cgal_api (CGAL public API: one-call interface) ──────────────────── # Demonstrates CGAL::discrete_conformal_map_euclidean from # ; contrast with example_flatten (internal API). add_executable(example_cgal_api example_cgal_api.cpp) target_include_directories(example_cgal_api SYSTEM PRIVATE ${EXAMPLE_INCLUDES}) target_include_directories(example_cgal_api PRIVATE ${EXAMPLE_PRIVATE_INCLUDES}) target_compile_definitions(example_cgal_api PRIVATE ${EXAMPLE_DEFS}) # ── example_viewer (requires WITH_VIEWER) ───────────────────────────────────── if(WITH_VIEWER) add_executable(example_viewer example_viewer.cpp) target_include_directories(example_viewer SYSTEM PRIVATE ${EXAMPLE_INCLUDES} ${CMAKE_SOURCE_DIR}/deps/libigl-2.6.0/include ${CMAKE_SOURCE_DIR}/deps/libigl-glad/include ) target_include_directories(example_viewer PRIVATE ${EXAMPLE_PRIVATE_INCLUDES}) target_compile_definitions(example_viewer PRIVATE ${EXAMPLE_DEFS}) target_link_libraries(example_viewer PRIVATE viewer) endif()