Files
Renderive/Kernel/CMakeLists.txt
T
2026-08-04 18:14:38 +08:00

75 lines
4.7 KiB
CMake

cmake_minimum_required(VERSION 3.20)
project(Renderive_Scene_Taskflow LANGUAGES CXX)
set(RENDERIVE_TASKFLOW_ROOT "" CACHE PATH "Taskflow 4.1.0 root")
find_path(RENDERIVE_TASKFLOW_INCLUDE_DIR
NAMES taskflow/taskflow.hpp
PATHS
"${RENDERIVE_TASKFLOW_ROOT}"
"${RENDERIVE_TASKFLOW_ROOT}/include"
"${CMAKE_CURRENT_LIST_DIR}/third_party/taskflow"
"${CMAKE_CURRENT_LIST_DIR}/third_party/taskflow/include"
)
if (NOT RENDERIVE_TASKFLOW_INCLUDE_DIR)
set(RENDERIVE_TASKFLOW_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/tests/compat")
message(STATUS "Taskflow 4.1.0 not found; using the private dependency-graph compatibility layer")
endif ()
add_library(renderive_scene STATIC
"${CMAKE_CURRENT_LIST_DIR}/src/renderive/renderable/Renderable_Task_Graph.cpp"
"${CMAKE_CURRENT_LIST_DIR}/src/renderive/renderable/base/Renderable_Base.cpp"
"${CMAKE_CURRENT_LIST_DIR}/src/renderive/scene/base/Scene_Base.cpp"
)
target_include_directories(renderive_scene
PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src>"
PRIVATE "${RENDERIVE_TASKFLOW_INCLUDE_DIR}"
)
target_compile_features(renderive_scene PUBLIC cxx_std_20)
find_package(Threads REQUIRED)
target_link_libraries(renderive_scene PRIVATE Threads::Threads)
set(renderive_test_sources
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/base/Concepts_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/base/node/Multiway_Node_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/base/observer/Observer_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/base/observer/time_source/Steady_Time_Source_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/base/property/Concepts_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/base/property/Property_Builder_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/base/property/Validated_Value_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/frame_control/base/Frame_Control_Strategy_Base_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/frame_control/concept/Concepts_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/frame_control/strategy/flow/Flow_Refresh_Strategy_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/frame_control/strategy/low_latency/Low_Latency_Strategy_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/frame_control/strategy/manual/Manual_Refresh_Strategy_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/real_time_data/base/Real_Time_Data_Base_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/real_time_data/Real_Time_Data_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/renderable/base/Renderable_Base_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/renderable/color/Color_Cache_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/renderable/concept/Renderable_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/renderable/Renderable_Task_Graph_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/scene/base/Scene_Base_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/scene/Scene_Memory_Resource_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/scene/concept/Scene_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/scene/Scene2D_Context_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/scene/Scene2D_Render_Order_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/scene/Scene3D_Context_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/scene/Scene_State_Observer_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/state/base/State_Strategy_Base_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/state/Concepts_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/state/Double_State_Strategy_Test.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/state/Triple_State_Strategy_Test.cpp"
)
add_executable(renderive_scene_app "tests/main.cpp")
target_link_libraries(renderive_scene_app PRIVATE renderive_scene)
include(CTest)
if (BUILD_TESTING)
find_package(GTest CONFIG QUIET)
if (NOT GTest_FOUND)
add_library(renderive_gtest_compat INTERFACE)
target_include_directories(renderive_gtest_compat INTERFACE "${CMAKE_CURRENT_LIST_DIR}/tests/compat")
add_library(GTest::gtest ALIAS renderive_gtest_compat)
message(STATUS "GTest not found; using the test-only compatibility runner")
endif ()
target_sources(renderive_scene_app PRIVATE ${renderive_test_sources})
target_compile_definitions(renderive_scene_app PRIVATE RENDERIVE_WITH_GTEST=1)
target_link_libraries(renderive_scene_app PRIVATE GTest::gtest)
add_test(NAME renderive_scene_tests COMMAND renderive_scene_app --gtest)
endif ()