include_guard(GLOBAL) #rcl_init("renderive") #include(${CMAKE_CURRENT_LIST_DIR}/cmake/pthreads4w.cmake) #include(${CMAKE_CURRENT_LIST_DIR}/cmake/datoviz.cmake) set(renderive_dependencies global::GTest global::blend2d global::taskflow global::mpmcqueue global::drogon global::libdatachannel # renderive::datoviz ${Psc_Core_dependencies} ) #rcl_generate_registered_cmake_library() library_is_installed_with_rely(renderive_dependencies_installed ${renderive_dependencies}) if (NOT renderive_dependencies_installed) set(log "[FATAL_ERROR] Renderive 依赖未安装,请先构建 renderive_env 目标") rcl_log_append("${log}") rcl_add_dependency_action_targets(renderive_env ${renderive_dependencies}) return() endif () rcl_load_dependency_environment(${renderive_dependencies}) find_package(Drogon) find_package(spdlog CONFIG REQUIRED) find_package(LibDataChannel CONFIG REQUIRED) find_package(Qt5 MODULE REQUIRED COMPONENTS Core Gui Widgets Svg Xml PrintSupport QuickWidgets Multimedia ) find_package(blend2d REQUIRED) find_package(GTest REQUIRED) find_package(Taskflow CONFIG REQUIRED) find_package(MPMCQueue CONFIG REQUIRED) find_package(Threads REQUIRED) set(qt_libraries Qt5::Widgets Qt5::Core Qt5::Svg Qt5::Xml Qt5::PrintSupport Qt5::Multimedia Qt5::QuickWidgets ) set(root_dir "${CMAKE_CURRENT_LIST_DIR}") # Kernel is the only rendering architecture used by Core2. add_library(Renderive_Kernel STATIC "${root_dir}/Kernel/src/renderive/renderable/Renderable_Task_Graph.cpp" "${root_dir}/Kernel/src/renderive/renderable/base/Renderable_Base.cpp" "${root_dir}/Kernel/src/renderive/scene/base/Scene_Base.cpp" ) target_include_directories(Renderive_Kernel PUBLIC "${root_dir}/Kernel/src") target_compile_features(Renderive_Kernel PUBLIC cxx_std_20) target_link_libraries(Renderive_Kernel PRIVATE Taskflow::Taskflow Threads::Threads) file(GLOB_RECURSE renderive_core2_sources CONFIGURE_DEPENDS "${root_dir}/Core2/*.cpp" "${root_dir}/Core2/*.h" "${root_dir}/Core2/*.hpp" ) list(FILTER renderive_core2_sources EXCLUDE REGEX "[/\\\\]tests[/\\\\]") add_library(Renderive_Core2 STATIC ${renderive_core2_sources}) target_include_directories(Renderive_Core2 PUBLIC "${root_dir}") target_compile_features(Renderive_Core2 PUBLIC cxx_std_20) target_link_libraries(Renderive_Core2 PUBLIC Renderive_Kernel PRIVATE blend2d::blend2d ) set(renderive_qt_sources "${root_dir}/Qt/bridge/Qt_Event_Adapter.cpp" "${root_dir}/Qt/bridge/Qt_Image_Adapter.cpp" "${root_dir}/Qt/bridge/Qt_Presentation_Sink.cpp" "${root_dir}/Qt/plot/Plot.cpp" "${root_dir}/Qt/plot/Plot.h" "${root_dir}/Qt/plot/Latency_Eager_Plot.cpp" "${root_dir}/Qt/plot/Latency_Eager_Plot.h" "${root_dir}/Qt/plot/Explicit_Plot.cpp" "${root_dir}/Qt/plot/Explicit_Plot.h" ) add_library(Renderive_Qt STATIC ${renderive_qt_sources}) set_property(TARGET Renderive_Qt PROPERTY AUTOMOC ON) target_include_directories(Renderive_Qt PUBLIC "${root_dir}") target_compile_features(Renderive_Qt PUBLIC cxx_std_20) target_link_libraries(Renderive_Qt PUBLIC Renderive_Core2 ${qt_libraries}) unset(Psc_Widget_src) append_glob_source(Psc_Widget_src "${root_dir}/Widget") add_library(Psc_Widget STATIC ${Psc_Widget_src}) set_property(TARGET Psc_Widget PROPERTY AUTOMOC ON) set_property(TARGET Psc_Widget PROPERTY AUTORCC ON) target_link_libraries(Psc_Widget PUBLIC ${qt_libraries} Psc_Core_Static) enable_testing() file(GLOB_RECURSE renderive_kernel_test_sources CONFIGURE_DEPENDS "${root_dir}/Kernel/tests/renderive/*.cpp" ) add_executable(Renderive_Kernel_Tests EXCLUDE_FROM_ALL "${root_dir}/Kernel/tests/main.cpp" ${renderive_kernel_test_sources} ) target_compile_definitions(Renderive_Kernel_Tests PRIVATE RENDERIVE_WITH_GTEST) target_link_libraries(Renderive_Kernel_Tests PRIVATE Renderive_Kernel GTest::GTest) add_test(NAME Renderive_Kernel_Tests COMMAND Renderive_Kernel_Tests) add_executable(Renderive_Core2_Tests EXCLUDE_FROM_ALL "${root_dir}/Kernel/tests/main.cpp" "${root_dir}/Core2/tests/Core2_Integration_Tests.cpp" "${root_dir}/Core2/tests/Core2_Frame_Pipeline_Tests.cpp" ) target_link_libraries(Renderive_Core2_Tests PRIVATE Renderive_Core2 GTest::GTest blend2d::blend2d ) add_test(NAME Renderive_Core2_Tests COMMAND Renderive_Core2_Tests) add_executable(Renderive_Qt_Tests EXCLUDE_FROM_ALL "${root_dir}/Core2/tests/Qt_Bridge_Tests.cpp" ) target_link_libraries(Renderive_Qt_Tests PRIVATE Renderive_Qt GTest::GTest) get_filename_component(renderive_qt_runtime_root "${Qt5_DIR}/../../.." ABSOLUTE) add_test(NAME Renderive_Qt_Tests COMMAND "${CMAKE_COMMAND}" -E env "PATH=${renderive_qt_runtime_root}/bin\;$ENV{PATH}" "QT_QPA_PLATFORM=offscreen" "QT_QPA_PLATFORM_PLUGIN_PATH=${renderive_qt_runtime_root}/plugins/platforms" "$" ) if (MSVC) target_compile_options(Renderive_Kernel PRIVATE /utf-8) target_compile_options(Renderive_Core2 PRIVATE /utf-8) target_compile_options(Renderive_Qt PRIVATE /utf-8) endif () if (NOT TARGET Adminive::Nlohmann) set(renderive_saved_build_testing "${BUILD_TESTING}") set(BUILD_TESTING OFF) if (CMAKE_CURRENT_LIST_DIR STREQUAL CMAKE_SOURCE_DIR) set(3rd_dir "${CMAKE_SOURCE_DIR}/third_party") else () set(3rd_dir "${root_dir}/..") endif () add_subdirectory("${3rd_dir}/Adminive" "${CMAKE_CURRENT_BINARY_DIR}/third_party/Adminive" EXCLUDE_FROM_ALL) set(BUILD_TESTING "${renderive_saved_build_testing}") unset(renderive_saved_build_testing) endif () include(${CMAKE_CURRENT_LIST_DIR}/web.cmake) set(renderive_package_includes "^.*$" ) set(renderive_package_excludes # "^[.]git/.*$" # "^[.]idea/.*$" "^data/.*$" "^performance/.*$" "^cmake-build-[^/]*/.*$" "^(.*/)?node_modules/.*$" "^(.*/)?.git/.*$" "^(.*/)?wwwroot/.*$" "^(.*/)?dist/.*$" "^(.*/)?htdocs/.*$" "^(.*/)?model/.*$" "^(.*/)?.idea/.*$" "^(.*/)?.playwright-cli/.*$" "^(.*/)?performance/.*$" "^(.*/)?dll_source_lzy/.*$" "^.*[.]tsbuildinfo$" "^.*[.]zip$" "^.*[.]otf$" ) _add_project_zip_target( renderive_package_zip "${CMAKE_CURRENT_LIST_DIR}/renderive_package.zip" "${CMAKE_SOURCE_DIR}" renderive_package_includes renderive_package_excludes )