优化cmake

This commit is contained in:
2026-08-13 17:54:05 +08:00
parent fa08c7860c
commit 5c2fe60b92
6 changed files with 221 additions and 65 deletions
+8 -1
View File
@@ -1,6 +1,13 @@
# 加载 datoviz的依赖库
include(${CMAKE_CURRENT_LIST_DIR}/cmake/export.cmake)
set(Renderive_render_3D_dependencies render_3D::pthreads4w render_3D::cglm)
set(Renderive_render_3D_dependencies
render_3D::PThreads4W
render_3D::cglm
render_3D::Vulkan-Hpp
render_3D::VulkanMemoryAllocator
render_3D::msdf-atlas-gen
render_3D::tinyobjloader
)
if (RENDERIVE_BUILD_TESTS)
list(APPEND Renderive_render_3D_dependencies global::GTest)
endif ()
-24
View File
@@ -1,24 +0,0 @@
include_guard(GLOBAL)
block()
_register_git_cmake_library(render_3D::cglm
"https://github.com/recp/cglm.git"
"v0.9.6"
)
rcl_get_effective_install_dir(render_3D::cglm CGLM_ROOT)
set(CGLM_CONFIG_DIR "${CGLM_ROOT}/lib/cmake/cglm")
set(cglm_opts
-DCGLM_SHARED=OFF
-DCGLM_STATIC=ON
-DCGLM_USE_TEST=OFF
)
rcl_cmake_library_set_cmake_options(render_3D::cglm ${cglm_opts})
rcl_cmake_library_set_other_use_opt(render_3D::cglm
"-Dcglm_DIR=\"${CGLM_CONFIG_DIR}\""
)
rcl_cmake_library_set_init_script(render_3D::cglm
"set(cglm_DIR \"${CGLM_CONFIG_DIR}\")"
)
rcl_cmake_library_set_clear_script(render_3D::cglm
"unset(cglm_DIR)"
)
endblock()
+210
View File
@@ -0,0 +1,210 @@
include_guard(GLOBAL)
block()
set(freetype_opts)
_register_git_cmake_library(render_3D::freetype
https://github.com/freetype/freetype.git
VER-2-13-3
)
rcl_get_effective_install_dir(render_3D::freetype FREETYPE_ROOT)
set(FREETYPE_INCLUDE_DIRS "${FREETYPE_ROOT}/include/freetype2")
set(FREETYPE_INCLUDE_DIR_ft2build "${FREETYPE_ROOT}/include/freetype2")
set(FREETYPE_INCLUDE_DIR_freetype2 "${FREETYPE_ROOT}/include/freetype2")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(FREETYPE_LIBRARY "${FREETYPE_ROOT}/lib/freetyped.lib")
else ()
set(FREETYPE_LIBRARY "${FREETYPE_ROOT}/lib/freetype.lib")
endif ()
rcl_cmake_library_set_cmake_options(render_3D::freetype ${freetype_opts})
rcl_cmake_library_set_other_use_opt(render_3D::freetype
"-DFREETYPE_INCLUDE_DIRS=\"${FREETYPE_INCLUDE_DIRS}\""
"-DFREETYPE_INCLUDE_DIR_ft2build=\"${FREETYPE_INCLUDE_DIR_ft2build}\""
"-DFREETYPE_INCLUDE_DIR_freetype2=\"${FREETYPE_INCLUDE_DIR_freetype2}\""
"-DFREETYPE_LIBRARY=\"${FREETYPE_LIBRARY}\""
"-DFREETYPE_LIBRARIES=\"${FREETYPE_LIBRARY}\""
)
rcl_cmake_library_set_init_script(render_3D::freetype
"set(FREETYPE_ROOT \"${FREETYPE_ROOT}\")"
"set(FREETYPE_INCLUDE_DIRS \"${FREETYPE_INCLUDE_DIRS}\")"
"set(FREETYPE_INCLUDE_DIR_ft2build \"${FREETYPE_INCLUDE_DIR_ft2build}\")"
"set(FREETYPE_INCLUDE_DIR_freetype2 \"${FREETYPE_INCLUDE_DIR_freetype2}\")"
"set(FREETYPE_LIBRARY \"${FREETYPE_LIBRARY}\")"
"set(FREETYPE_LIBRARIES \"${FREETYPE_LIBRARY}\")"
)
rcl_cmake_library_set_clear_script(render_3D::freetype
"unset(FREETYPE_ROOT)"
"unset(FREETYPE_INCLUDE_DIRS)"
"unset(FREETYPE_INCLUDE_DIR_ft2build)"
"unset(FREETYPE_INCLUDE_DIR_freetype2)"
"unset(FREETYPE_LIBRARY)"
"unset(FREETYPE_LIBRARIES)"
)
set(tinyxml2_opts
-Dtinyxml2_BUILD_TESTING=OFF
-Dtinyxml2_INSTALL_PKGCONFIG=OFF
-Dtinyxml2_SHARED_LIBS=OFF
-Dtinyxml2_INSTALL_CMAKEDIR=lib/cmake/tinyxml2
)
_register_git_cmake_library(render_3D::tinyxml2
"https://github.com/leethomason/tinyxml2.git"
"11.0.0"
)
rcl_get_effective_install_dir(render_3D::tinyxml2 TINYXML2_ROOT)
set(TINYXML2_CONFIG_DIR "${TINYXML2_ROOT}/lib/cmake/tinyxml2")
rcl_cmake_library_set_cmake_options(render_3D::tinyxml2 ${tinyxml2_opts})
rcl_cmake_library_set_other_use_opt(render_3D::tinyxml2
"-Dtinyxml2_DIR=\"${TINYXML2_CONFIG_DIR}\""
)
rcl_cmake_library_set_init_script(render_3D::tinyxml2
"set(TINYXML2_ROOT \"${TINYXML2_ROOT}\")"
"set(tinyxml2_DIR \"${TINYXML2_CONFIG_DIR}\")"
)
rcl_cmake_library_set_clear_script(render_3D::tinyxml2
"unset(TINYXML2_ROOT)"
"unset(tinyxml2_DIR)"
)
set(msdfgen_cmake_option ${base_options})
list(APPEND msdfgen_cmake_option
-DMSDFGEN_USE_SKIA=OFF
-DMSDFGEN_USE_VCPKG=OFF
-DBUILD_SHARED_LIBS=ON
-DMSDFGEN_DYNAMIC_RUNTIME=ON
-DMSDFGEN_INSTALL=ON
)
_register_git_cmake_library(render_3D::msdfgen
https://github.com/Chlumsky/msdfgen.git
v1.12
)
rcl_get_effective_install_dir(render_3D::msdfgen MSDFGEN_ROOT)
rcl_cmake_library_set_cmake_options(render_3D::msdfgen ${msdfgen_cmake_option})
rcl_cmake_library_set_deps(render_3D::msdfgen
global::zlib
global::libpng
render_3D::freetype
render_3D::tinyxml2
)
set(msdfgl_cmake_option "")
if (WIN32)
set(PThreads4W_option ${base_options})
list(APPEND PThreads4W_option
"-DCMAKE_C_FLAGS=-D_WINDLL"
"-DCMAKE_CXX_FLAGS=-D_WINDLL"
)
_register_git_cmake_library(render_3D::PThreads4W
https://github.com/jwinarske/pthreads4w.git
"cmake"
)
rcl_get_effective_install_dir(render_3D::PThreads4W PTHREADS4W_ROOT)
rcl_cmake_library_set_cmake_options(render_3D::PThreads4W ${PThreads4W_option})
endif ()
set(glfw3_option ${base_options})
_register_git_cmake_library(render_3D::glfw3
https://github.com/glfw/glfw.git
"3.4"
)
rcl_get_effective_install_dir(render_3D::glfw3 GLFW3_ROOT)
rcl_cmake_library_set_cmake_options(render_3D::glfw3 ${glfw3_option})
set(msdf-atlas-gen_option ${base_options})
list(APPEND msdf-atlas-gen_option
-DMSDFGEN_DISABLE_SVG=OFF
-DMSDFGEN_USE_SKIA=OFF
-DMSDF_ATLAS_BUILD_STANDALONE=OFF
-DMSDF_ATLAS_USE_VCPKG=OFF
-DMSDF_ATLAS_USE_SKIA=OFF
-DMSDF_ATLAS_DYNAMIC_RUNTIME=ON
-DMSDF_ATLAS_MSDFGEN_EXTERNAL=OFF
-DMSDF_ATLAS_INSTALL=ON
-DMSDFGEN_INSTALL=ON
-DBUILD_SHARED_LIBS=OFF
)
_register_git_cmake_library(render_3D::msdf-atlas-gen
https://github.com/Chlumsky/msdf-atlas-gen.git
v1.4
)
rcl_get_effective_install_dir(render_3D::msdf-atlas-gen MSDF_ATLAS_GEN_ROOT)
rcl_cmake_library_set_cmake_options(render_3D::msdf-atlas-gen ${msdf-atlas-gen_option})
rcl_cmake_library_set_deps(render_3D::msdf-atlas-gen
global::zlib
global::libpng
render_3D::freetype
render_3D::tinyxml2
)
set(cglm_option ${base_options})
_register_git_cmake_library(render_3D::cglm
"https://github.com/recp/cglm.git"
v0.9.6
)
rcl_get_effective_install_dir(render_3D::cglm CGLM_ROOT)
rcl_cmake_library_set_cmake_options(render_3D::cglm ${cglm_option})
set(glm_option ${base_options})
_register_git_cmake_library(render_3D::glm
"https://github.com/g-truc/glm.git"
"1.0.3"
)
rcl_get_effective_install_dir(render_3D::glm GLM_ROOT)
rcl_cmake_library_set_cmake_options(render_3D::glm ${glm_option})
set(tinyobjloader_option ${base_options})
list(APPEND tinyobjloader_option
-DCMAKE_POLICY_VERSION_MINIMUM=3.20
)
_register_git_cmake_library(render_3D::tinyobjloader
"https://github.com/tinyobjloader/tinyobjloader.git"
"v1.0.7"
)
rcl_get_effective_install_dir(render_3D::tinyobjloader TINYOBJLOADER_ROOT)
rcl_cmake_library_set_cmake_options(render_3D::tinyobjloader ${tinyobjloader_option})
set(vk-bootstrap_option ${base_options})
_register_git_cmake_library(render_3D::vk-bootstrap
"https://github.com/charles-lunarg/vk-bootstrap.git"
"v1.4.357"
)
rcl_get_effective_install_dir(render_3D::vk-bootstrap VK_BOOTSTRAP_ROOT)
rcl_cmake_library_set_cmake_options(render_3D::vk-bootstrap ${vk-bootstrap_option})
set(Vulkan-Hpp_option ${base_options})
_register_git_cmake_library(render_3D::Vulkan-Hpp
"https://github.com/KhronosGroup/Vulkan-Hpp.git"
"v1.4.357"
)
rcl_get_effective_install_dir(render_3D::Vulkan-Hpp VULKAN_HPP_ROOT)
rcl_cmake_library_set_cmake_options(render_3D::Vulkan-Hpp ${Vulkan-Hpp_option})
set(volk_option ${base_options})
list(APPEND volk_option
-DVOLK_INSTALL=ON
-DVOLK_PULL_IN_VULKAN=ON
-DVOLK_HEADERS_ONLY=OFF
-DVOLK_NAMESPACE=ON
)
_register_git_cmake_library(render_3D::volk
"https://github.com/zeux/volk.git"
"vulkan-sdk-1.4.357.0"
)
rcl_get_effective_install_dir(render_3D::volk VOLK_ROOT)
rcl_cmake_library_set_cmake_options(render_3D::volk ${volk_option})
set(VulkanMemoryAllocator_option ${base_options})
_register_git_cmake_library(render_3D::VulkanMemoryAllocator
"https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git"
"v3.3.0"
)
rcl_get_effective_install_dir(render_3D::VulkanMemoryAllocator VULKAN_MEMORY_ALLOCATOR_ROOT)
rcl_cmake_library_set_cmake_options(render_3D::VulkanMemoryAllocator ${VulkanMemoryAllocator_option})
set(tinygltf_option ${base_options})
_register_git_cmake_library(render_3D::tinygltf
"https://github.com/syoyo/tinygltf.git"
"v3.0.0"
)
rcl_get_effective_install_dir(render_3D::tinygltf TINYGLTF_ROOT)
rcl_cmake_library_set_cmake_options(render_3D::tinygltf ${tinygltf_option})
set(fastgltf_option ${base_options})
_register_git_cmake_library(render_3D::fastgltf
"https://github.com/spnda/fastgltf.git"
"v0.9.0"
)
rcl_get_effective_install_dir(render_3D::fastgltf FASTGLTF_ROOT)
rcl_cmake_library_set_cmake_options(render_3D::fastgltf ${fastgltf_option})
set(VulkanSceneGraph_option ${base_options})
_register_git_cmake_library(render_3D::VulkanSceneGraph
"https://github.com/vsg-dev/VulkanSceneGraph.git"
"v1.1.15"
)
rcl_get_effective_install_dir(render_3D::VulkanSceneGraph VULKAN_SCENE_GRAPH_ROOT)
rcl_cmake_library_set_cmake_options(render_3D::VulkanSceneGraph ${VulkanSceneGraph_option})
endblock()
+1 -2
View File
@@ -1,4 +1,3 @@
rcl_init(render_3D)
include(${CMAKE_CURRENT_LIST_DIR}/pthreads4w.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/cglm.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/computer_graphics.cmake)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/module")
+2 -1
View File
@@ -1,5 +1,6 @@
include_guard(GLOBAL)
rcl_get_effective_install_dir(render_3D::pthreads4w PTHREADS4W_ROOT)
rcl_get_effective_install_dir(render_3D::PThreads4W PTHREADS4W_ROOT)
message("render_3D::PThreads4W PTHREADS4W_ROOT=${PTHREADS4W_ROOT}")
set(PThreads4W_INCLUDE_DIR "${PTHREADS4W_ROOT}/include")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(PThreads4W_LIBRARY "${PTHREADS4W_ROOT}/lib/pthreadVC3d.lib")
-37
View File
@@ -1,37 +0,0 @@
include_guard(GLOBAL)
block()
if (WIN32)
_register_git_cmake_library(render_3D::pthreads4w
"https://github.com/GerHobbelt/pthread-win32.git"
"v3.0.3.1"
)
rcl_get_effective_install_dir(render_3D::pthreads4w PTHREADS4W_ROOT)
set(PTHREADS4W_INCLUDE_DIR "${PTHREADS4W_ROOT}/include")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(PTHREADS4W_LIBRARY "${PTHREADS4W_ROOT}/lib/pthreadVC3d.lib")
else ()
set(PTHREADS4W_LIBRARY "${PTHREADS4W_ROOT}/lib/pthreadVC3.lib")
endif ()
set(pthreads4w_opts
-DENABLE_TESTS=OFF
"-DCMAKE_C_FLAGS=-D_WINDLL"
"-DCMAKE_CXX_FLAGS=-D_WINDLL"
"-DDLLDEST=${PTHREADS4W_ROOT}/bin"
"-DLIBDEST=${PTHREADS4W_ROOT}/lib"
"-DHDRDEST=${PTHREADS4W_ROOT}/include"
)
rcl_cmake_library_set_cmake_options(render_3D::pthreads4w ${pthreads4w_opts})
rcl_cmake_library_set_other_use_opt(render_3D::pthreads4w
"-DPThreads4W_INCLUDE_DIR=\"${PTHREADS4W_INCLUDE_DIR}\""
"-DPThreads4W_LIBRARY=\"${PTHREADS4W_LIBRARY}\""
)
rcl_cmake_library_set_init_script(render_3D::pthreads4w
"set(PThreads4W_INCLUDE_DIR \"${PTHREADS4W_INCLUDE_DIR}\")"
"set(PThreads4W_LIBRARY \"${PTHREADS4W_LIBRARY}\")"
)
rcl_cmake_library_set_clear_script(render_3D::pthreads4w
"unset(PThreads4W_INCLUDE_DIR)"
"unset(PThreads4W_LIBRARY)"
)
endif ()
endblock()