diff --git a/render_3D/CMakeLists.txt b/render_3D/CMakeLists.txt index 2ca6579..384a353 100644 --- a/render_3D/CMakeLists.txt +++ b/render_3D/CMakeLists.txt @@ -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 () diff --git a/render_3D/cmake/cglm.cmake b/render_3D/cmake/cglm.cmake deleted file mode 100644 index 51a40d0..0000000 --- a/render_3D/cmake/cglm.cmake +++ /dev/null @@ -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() \ No newline at end of file diff --git a/render_3D/cmake/computer_graphics.cmake b/render_3D/cmake/computer_graphics.cmake new file mode 100644 index 0000000..15db4b6 --- /dev/null +++ b/render_3D/cmake/computer_graphics.cmake @@ -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() \ No newline at end of file diff --git a/render_3D/cmake/export.cmake b/render_3D/cmake/export.cmake index e628799..7827f70 100644 --- a/render_3D/cmake/export.cmake +++ b/render_3D/cmake/export.cmake @@ -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") \ No newline at end of file diff --git a/render_3D/cmake/module/FindPThreads4W.cmake b/render_3D/cmake/module/FindPThreads4W.cmake index 9e883d2..29e398c 100644 --- a/render_3D/cmake/module/FindPThreads4W.cmake +++ b/render_3D/cmake/module/FindPThreads4W.cmake @@ -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") diff --git a/render_3D/cmake/pthreads4w.cmake b/render_3D/cmake/pthreads4w.cmake deleted file mode 100644 index 8603cb5..0000000 --- a/render_3D/cmake/pthreads4w.cmake +++ /dev/null @@ -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() \ No newline at end of file