Files
cup_edit/thermion_dart/native/CMakeLists.txt
2025-07-01 10:08:36 +08:00

130 lines
2.9 KiB
CMake

cmake_minimum_required(VERSION 3.15)
project(thermion_dart VERSION 1.0.0 LANGUAGES CXX C)
# Configuration variables
set(FILAMENT_VERSION "v1.58.0")
set(PACKAGE_NAME "thermion_dart")
set(PLATFORM "macos")
# Set C++ standard
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Set macOS specific options
set(CMAKE_OSX_DEPLOYMENT_TARGET 13.0)
set(CMAKE_MACOSX_RPATH ON)
# Debug build by default
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug)
endif()
# Enable tracing
add_definitions(-DENABLE_TRACING=1)
# Locate source files
file(GLOB_RECURSE SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/scene/*.cpp"
)
# Exclude specific files
list(FILTER SOURCES EXCLUDE REGEX "CMakeLists.txt|main.cpp|windows")
# Material and resource sources
set(MATERIAL_SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/include/material/unlit_fixed_size.c"
"${CMAKE_CURRENT_SOURCE_DIR}/include/material/image.c"
"${CMAKE_CURRENT_SOURCE_DIR}/include/material/grid.c"
"${CMAKE_CURRENT_SOURCE_DIR}/include/material/linear_depth.c"
)
set_source_files_properties(${MATERIAL_SOURCES} PROPERTIES LANGUAGE CXX)
set(RESOURCE_SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/include/resources/translation_gizmo_glb.c"
"${CMAKE_CURRENT_SOURCE_DIR}/include/resources/rotation_gizmo_glb.c"
)
set_source_files_properties(${RESOURCE_SOURCES} PROPERTIES LANGUAGE CXX)
# Create the shared library
add_library(thermion_dart SHARED
${SOURCES}
${MATERIAL_SOURCES}
${RESOURCE_SOURCES}
)
# Include directories
target_include_directories(thermion_dart PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}/include"
"${CMAKE_CURRENT_SOURCE_DIR}/include/filament"
)
# Set the output name of the library
set_target_properties(thermion_dart PROPERTIES
OUTPUT_NAME "thermion_dart"
PREFIX "lib"
SUFFIX ".dylib"
)
# Filament libraries path
set(FILAMENT_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../.dart_tool/thermion_dart/lib/${FILAMENT_VERSION}/macos/debug")
# Link libraries
target_link_directories(thermion_dart PRIVATE ${FILAMENT_LIB_DIR})
target_link_libraries(thermion_dart PRIVATE
filament
backend
filameshio
viewer
filamat
meshoptimizer
mikktspace
geometry
utils
filabridge
gltfio_core
gltfio
filament-iblprefilter
image
imageio
tinyexr
filaflat
dracodec
ibl
ktxreader
png
z
stb
uberzlib
smol-v
uberarchive
zstd
basis_transcoder
matdbg
fgviewer
bluegl
bluevk
)
# macOS frameworks
find_library(FOUNDATION_FRAMEWORK Foundation)
find_library(CORE_VIDEO_FRAMEWORK CoreVideo)
find_library(COCOA_FRAMEWORK Cocoa)
find_library(METAL_FRAMEWORK Metal)
target_link_libraries(thermion_dart PRIVATE
${FOUNDATION_FRAMEWORK}
${CORE_VIDEO_FRAMEWORK}
${COCOA_FRAMEWORK}
${METAL_FRAMEWORK}
)
# Install rules
install(TARGETS thermion_dart
LIBRARY DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/build"
)