70 lines
2.5 KiB
CMake
70 lines
2.5 KiB
CMake
# 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}/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()
|