# Filament SDK configuration for MetaCore set(METACORE_FILAMENT_ROOT "${CMAKE_SOURCE_DIR}/third_party/filament_installed" CACHE PATH "Path to installed Filament SDK") set(METACORE_FILAMENT_INCLUDE_DIR "${METACORE_FILAMENT_ROOT}/include") set(METACORE_FILAMENT_LIB_DIR "${METACORE_FILAMENT_ROOT}/lib/x86_64") function(metacore_use_filament target_name) if(NOT TARGET ${target_name}) message(FATAL_ERROR "Target ${target_name} does not exist.") endif() message(STATUS "Linking Filament to ${target_name}") if(WIN32) set(_filament_libs "${METACORE_FILAMENT_LIB_DIR}/filament.lib" "${METACORE_FILAMENT_LIB_DIR}/backend.lib" "${METACORE_FILAMENT_LIB_DIR}/utils.lib" "${METACORE_FILAMENT_LIB_DIR}/filabridge.lib" "${METACORE_FILAMENT_LIB_DIR}/filaflat.lib" "${METACORE_FILAMENT_LIB_DIR}/filamat.lib" "${METACORE_FILAMENT_LIB_DIR}/shaders.lib" "${METACORE_FILAMENT_LIB_DIR}/bluegl.lib" "${METACORE_FILAMENT_LIB_DIR}/gltfio.lib" "${METACORE_FILAMENT_LIB_DIR}/gltfio_core.lib" "${METACORE_FILAMENT_LIB_DIR}/ktxreader.lib" "${METACORE_FILAMENT_LIB_DIR}/abseil.lib" "${METACORE_FILAMENT_LIB_DIR}/perfetto.lib" "${METACORE_FILAMENT_LIB_DIR}/dracodec.lib" "${METACORE_FILAMENT_LIB_DIR}/geometry.lib" "${METACORE_FILAMENT_LIB_DIR}/smol-v.lib" "${METACORE_FILAMENT_LIB_DIR}/zstd.lib" opengl32.lib gdi32.lib user32.lib shlwapi.lib ) else() find_package(OpenGL REQUIRED) find_package(Threads REQUIRED) file(GLOB _filament_static_libs CONFIGURE_DEPENDS "${METACORE_FILAMENT_LIB_DIR}/lib*.a" ) set(_filament_libs -Wl,--start-group ${_filament_static_libs} -Wl,--end-group OpenGL::GL Threads::Threads ${CMAKE_DL_LIBS} ) endif() target_include_directories(${target_name} PRIVATE "${METACORE_FILAMENT_INCLUDE_DIR}") target_link_libraries(${target_name} PRIVATE ${_filament_libs}) # Filament 需要 C++17 或更高版本 target_compile_features(${target_name} PRIVATE cxx_std_17) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") target_compile_options(${target_name} PRIVATE -fpermissive) endif() if(MSVC) target_compile_definitions(${target_name} PRIVATE WIN32_LEAN_AND_MEAN _CRT_SECURE_NO_WARNINGS ) endif() endfunction()