Files
Renderive/main.cmake
T
2026-08-02 12:02:47 +08:00

65 lines
2.5 KiB
CMake

include_guard(GLOBAL)
set(renderive_dependencies global::GTest global::blend2d global::taskflow global::mpmcqueue)
rcl_add_dependency_action_targets(renderive_env ${renderive_dependencies})
library_is_installed_with_rely(renderive_dependencies_installed ${renderive_dependencies})
if (NOT renderive_dependencies_installed)
message(STATUS "Core 依赖未安装,请先构建 renderive_env 目标")
return()
else ()
set(Qt5_DIR "C:/Qt/Qt5.14.2/5.14.2/msvc2017_64/lib/cmake/Qt5" CACHE PATH "Qt5 cmake config dir" FORCE)
find_package(Qt5 CONFIG 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)
set(renderive_private_libraries
blend2d::blend2d
GTest::GTest
Taskflow::Taskflow
MPMCQueue::MPMCQueue
Psc_Core_Static
)
set(qt_libraries
Qt5::Widgets
Qt5::Core
Qt5::Svg
Qt5::Xml
Qt5::PrintSupport
Qt5::Multimedia
Qt5::QuickWidgets
)
endif ()
set(root_dir ${CMAKE_CURRENT_LIST_DIR})
append_glob_source(srcs ${root_dir}/Core)
add_library(Renderive_Core STATIC ${srcs})
target_include_directories(Renderive_Core PUBLIC ${root_dir})
target_link_libraries(Renderive_Core PUBLIC ${renderive_private_libraries})
enable_testing()
add_executable(Renderive_Core_Tests
${root_dir}/test/Renderive_Core_Tests.cpp
)
target_link_libraries(Renderive_Core_Tests PRIVATE Renderive_Core GTest::GTest)
add_test(NAME Renderive_Core_Tests COMMAND Renderive_Core_Tests)
append_glob_source(src2 ${root_dir}/Qt)
add_library(Renderive_Qt STATIC ${src2})
set_property(TARGET Renderive_Qt PROPERTY AUTOMOC ON)
target_link_libraries(Renderive_Qt PUBLIC Renderive_Core)
target_link_libraries(Renderive_Qt PUBLIC ${qt_libraries})
# 纯粹的Qt组件库
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})
target_link_libraries(Psc_Widget PUBLIC Psc_Core_Static)
# Demo 画廊
#append_glob_source(Demo_Gallery_src ${root_dir}/Demo_Gallery)
#add_executable(Demo_Gallery ${Demo_Gallery_src})
#target_link_libraries(Demo_Gallery PUBLIC Renderive_Qt Psc_Widget)