优化cmake

This commit is contained in:
2026-08-13 17:54:05 +08:00
parent a5a11c739a
commit 69281c5767
4 changed files with 48 additions and 25 deletions
+23 -13
View File
@@ -49,7 +49,12 @@ block()
# libpng
# =========================
set(LIBPNG_VERSION v1.6.58)
set(PNG_ROOT "${EXTERNAL_INSTALL_DIR}/PNG_${LIBPNG_VERSION}")
set(libpng_opts)
_register_git_cmake_library(global::libpng
https://github.com/glennrp/libpng.git
${LIBPNG_VERSION}
)
rcl_get_effective_install_dir(global::libpng PNG_ROOT)
set(PNG_PNG_INCLUDE_DIR "${PNG_ROOT}/include")
if (WIN32)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
@@ -64,24 +69,29 @@ block()
set(PNG_LIBRARY "${PNG_ROOT}/lib/libpng16.a")
endif ()
endif ()
set(libpng_opts)
list(APPEND libpng_opts "-DPNG_SHARED=OFF")
list(APPEND libpng_opts "-DPNG_STATIC=ON")
list(APPEND libpng_opts "-DPNG_TESTS=OFF")
list(APPEND libpng_opts "-DPNG_TOOLS=OFF")
list(APPEND libpng_opts "-DPNG_EXECUTABLES=OFF")
list(APPEND libpng_opts "-DZLIB_ROOT=\"${ZLIB_ROOT}\"")
list(APPEND libpng_opts "-DZLIB_LIBRARY=\"${ZLIB_LIBRARY}\"")
list(APPEND libpng_opts "-DZLIB_INCLUDE_DIR=\"${ZLIB_INCLUDE_DIR}\"")
_register_git_cmake_library(global::libpng
https://github.com/glennrp/libpng.git
v1.6.58
list(APPEND libpng_opts
-DPNG_SHARED=OFF
-DPNG_STATIC=ON
-DPNG_TESTS=OFF
-DPNG_TOOLS=OFF
-DPNG_EXECUTABLES=OFF
"-DZLIB_ROOT=${ZLIB_ROOT}"
"-DZLIB_LIBRARY=${ZLIB_LIBRARY}"
"-DZLIB_INCLUDE_DIR=${ZLIB_INCLUDE_DIR}"
)
rcl_cmake_library_set_cmake_options(global::libpng ${libpng_opts})
rcl_cmake_library_set_other_use_opt(global::libpng
"-DPNG_LIBRARY=\"${PNG_LIBRARY}\""
"-DPNG_PNG_INCLUDE_DIR=\"${PNG_PNG_INCLUDE_DIR}\""
)
rcl_cmake_library_set_init_script(global::libpng
"set(PNG_LIBRARY \"${PNG_LIBRARY}\")"
"set(PNG_PNG_INCLUDE_DIR \"${PNG_PNG_INCLUDE_DIR}\")"
)
rcl_cmake_library_set_clear_script(global::libpng
"unset(PNG_LIBRARY)"
"unset(PNG_PNG_INCLUDE_DIR)"
)
set(GTest_opts)
list(APPEND GTest_opts "-Dgtest_force_shared_crt=ON")
_register_git_cmake_library(global::GTest
@@ -46,7 +46,7 @@ block()
"cmake"
)
rcl_cmake_library_set_cmake_options(global::PThreads4W ${PThreads4W_option})
# C:\VulkanSDK\1.4.350.0
# C:\VulkanSDK\1.4.357.0
# SDK涓嬭浇 https://vulkan.lunarg.com/sdk/home
# https://docs.vulkan.org/tutorial/latest/00_Introduction.html
# https://github.com/Overv/VulkanTutorial.git
@@ -100,13 +100,13 @@ block()
set(vk-bootstrap_option ${base_options})
_register_git_cmake_library(global::vk-bootstrap
"https://github.com/charles-lunarg/vk-bootstrap.git"
"v1.4.350"
"v1.4.357"
)
rcl_cmake_library_set_cmake_options(global::vk-bootstrap ${vk-bootstrap_option})
set(Vulkan-Hpp_option ${base_options})
_register_git_cmake_library(global::Vulkan-Hpp
"https://github.com/KhronosGroup/Vulkan-Hpp.git"
"v1.4.350"
"v1.4.357"
)
rcl_cmake_library_set_cmake_options(global::Vulkan-Hpp ${Vulkan-Hpp_option})
set(volk_option ${base_options})
@@ -117,7 +117,7 @@ block()
#list(APPEND volk_option "-DVOLK_STATIC_DEFINES=VK_USE_PLATFORM_WIN32_KHR")
_register_git_cmake_library(global::volk
"https://github.com/zeux/volk.git"
"vulkan-sdk-1.4.350.0"
"vulkan-sdk-1.4.357.0"
)
rcl_cmake_library_set_cmake_options(global::volk ${volk_option})
# vma
@@ -1,10 +1,27 @@
include_guard(GLOBAL)
include("${CMAKE_CURRENT_LIST_DIR}/base.cmake")
block()
set(tinyxml2_opts)
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(global::tinyxml2
https://github.com/leethomason/tinyxml2.git
11.0.0
"https://github.com/leethomason/tinyxml2.git"
"11.0.0"
)
rcl_get_effective_install_dir(global::tinyxml2 TINYXML2_ROOT)
set(TINYXML2_CONFIG_DIR "${TINYXML2_ROOT}/lib/cmake/tinyxml2")
rcl_cmake_library_set_cmake_options(global::tinyxml2 ${tinyxml2_opts})
rcl_cmake_library_set_other_use_opt(global::tinyxml2
"-Dtinyxml2_DIR=\"${TINYXML2_CONFIG_DIR}\""
)
rcl_cmake_library_set_init_script(global::tinyxml2
"set(tinyxml2_DIR \"${TINYXML2_CONFIG_DIR}\")"
)
rcl_cmake_library_set_clear_script(global::tinyxml2
"unset(tinyxml2_DIR)"
)
rcl_cmake_library_set_cmake_options(global::tinyxml2 ${tinyxml2_opts})
set(jsoncpp_opts ${base_options})
@@ -170,13 +187,11 @@ block()
"1.15.0"
)
rcl_cmake_library_set_cmake_options(global::brpc ${brpc_opts})
_register_git_cmake_library(global::cmocka
"https://github.com/clibs/cmocka.git"
"cmocka-1.1.5"
)
rcl_cmake_library_set_cmake_options(global::cmocka ${cmocka_opts})
_register_git_cmake_library(global::expected
"https://github.com/palacaze/sigslot.git"
"v1.3.1"
@@ -188,7 +203,6 @@ block()
"v1.2.3"
)
rcl_cmake_library_set_cmake_options(global::sigslot ${sigslot_opts})
#add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
#add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
set(SQLiteCpp_opts ${base_options})
@@ -210,6 +224,4 @@ block()
# "boost-1.91.0"
# boost_locale_opts
#)
endblock()
@@ -497,6 +497,7 @@ function(rcl_add_dependency_action_targets_with_depth target_name dependency_dep
add_custom_target("${target_name}")
endif ()
__rcl_add_unique_target_dependencies("${target_name}" ${_dependency_action_targets})
message("${B}__rcl_add_unique_target_dependencies${E} ${target_name} -> ${_dependency_action_targets}")
endfunction()
# API: rcl_add_dependency_action_targets(<target_name> [library_names...])
# 作用: 递归加载指定库及全部间接依赖的单库 auto target,并创建去重后的 CMake target 依赖图。