From 62e106564a223bb9cd2300983890556d91d4193f Mon Sep 17 00:00:00 2001 From: wyc <1104749580@qq.com> Date: Wed, 22 Jul 2026 10:58:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=B8=E8=A7=84=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 0_cmake_library/doc.md | 121 ++++++++ 0_cmake_library/register/export.cmake | 1 + 0_cmake_library/register/osg_earth.cmake | 200 ++++++------- 0_cmake_library/register/vsg_cesium.cmake | 331 ++++++++++++++++++++++ end.cmake | 1 + 5 files changed, 555 insertions(+), 99 deletions(-) create mode 100644 0_cmake_library/doc.md create mode 100644 0_cmake_library/register/vsg_cesium.cmake diff --git a/0_cmake_library/doc.md b/0_cmake_library/doc.md new file mode 100644 index 0000000..2e858dc --- /dev/null +++ b/0_cmake_library/doc.md @@ -0,0 +1,121 @@ +# CMake 调试 / try_compile / 查找库 相关选项整理 + +## 1️⃣ try_compile / 编译测试相关 + +| 选项 / 变量 | 类型 | 示例 | 作用 | +|---|---|---|---| +| `--debug-trycompile` | 命令行 | `cmake --debug-trycompile -S . -B build` | 不删除 `try_compile()` / `try_run()` 生成的测试工程 | +| `CMAKE_TRY_COMPILE_CONFIGURATION` | 变量 | `-DCMAKE_TRY_COMPILE_CONFIGURATION=Debug` | 指定 try_compile 使用的构建类型 | +| `CMAKE_TRY_COMPILE_TARGET_TYPE` | 变量 | `-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY` | 指定 try_compile 生成的目标类型 | +| `CMAKE_TRY_COMPILE_NO_PLATFORM_VARIABLES` | 变量 | `-DCMAKE_TRY_COMPILE_NO_PLATFORM_VARIABLES=ON` | try_compile 不继承平台变量 | + +--- + +## 2️⃣ CMake 脚本执行追踪 + +| 选项 | 示例 | 作用 | +|---|---|---| +| `--trace` | `cmake --trace` | 打印每个执行的 CMake 指令 | +| `--trace-expand` | `cmake --trace-expand` | trace 并展开变量 | +| `--trace-source=` | `cmake --trace-source=CMakeLists.txt` | 只 trace 指定文件 | +| `--trace-redirect=` | `cmake --trace-redirect=trace.log` | 把 trace 输出写入文件 | + +--- + +## 3️⃣ find_package / 查找库调试 + +| 选项 / 变量 | 示例 | 作用 | +|---|---|---| +| `--debug-find` | `cmake --debug-find` | 打印 `find_package` 搜索路径 | +| `CMAKE_FIND_DEBUG_MODE` | `-DCMAKE_FIND_DEBUG_MODE=ON` | 调试 find 系列命令 | + +--- + +## 4️⃣ 日志级别控制 + +| 选项 | 示例 | 作用 | +|---|---|---| +| `--log-level=` | `cmake --log-level=DEBUG` | 控制日志输出级别 | +| `--log-context` | `cmake --log-context` | 显示日志来源 | +| `--log-level=TRACE` | `cmake --log-level=TRACE` | 最详细日志 | + +可用日志级别: + +| 级别 | +|---| +| `ERROR` | +| `WARNING` | +| `NOTICE` | +| `STATUS` | +| `VERBOSE` | +| `DEBUG` | +| `TRACE` | + +--- + +## 5️⃣ 生成系统调试 + +| 选项 | 示例 | 作用 | +|---|---|---| +| `--graphviz=` | `cmake --graphviz=deps.dot` | 生成依赖图 | +| `--profiling-output=` | `cmake --profiling-output=profile.json` | 输出配置性能分析 | + +--- + +## 6️⃣ 常用调试组合 + +### 调试 try_compile + +```bash +cmake --debug-trycompile -S . -B build +``` + +--- + +### 调试 find_package + +```bash +cmake --debug-find +``` + +--- + +### 查看所有脚本执行 + +```bash +cmake --trace-expand +``` + +--- + +### 超级调试模式 + +```bash +cmake \ + --debug-trycompile \ + --trace-expand \ + --debug-find \ + --log-level=DEBUG +``` + +--- + +## 7️⃣ 交叉编译最常用三项 + +| 选项 | 作用 | +|---|---| +| `--debug-trycompile` | 查看 CMake 编译器测试 | +| `--debug-find` | 查看库搜索路径 | +| `--trace-expand` | 查看 CMake 变量和执行流程 | + +--- + +## 8️⃣ try_compile 临时目录 + +CMake 的编译测试通常生成在: + +``` +build/CMakeFiles/CMakeTmp +``` + +开启 `--debug-trycompile` 后该目录不会被删除,方便调试编译问题。 \ No newline at end of file diff --git a/0_cmake_library/register/export.cmake b/0_cmake_library/register/export.cmake index a9dd5ed..ee932d5 100644 --- a/0_cmake_library/register/export.cmake +++ b/0_cmake_library/register/export.cmake @@ -5,4 +5,5 @@ include("${CMAKE_CURRENT_LIST_DIR}/computer_graphics.cmake") include("${CMAKE_CURRENT_LIST_DIR}/libarchive.cmake") include("${CMAKE_CURRENT_LIST_DIR}/with_qt.cmake") include("${CMAKE_CURRENT_LIST_DIR}/osg_earth.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/vsg_cesium.cmake") diff --git a/0_cmake_library/register/osg_earth.cmake b/0_cmake_library/register/osg_earth.cmake index 7d199e1..d28ca13 100644 --- a/0_cmake_library/register/osg_earth.cmake +++ b/0_cmake_library/register/osg_earth.cmake @@ -4,11 +4,13 @@ block() if(WIN32 AND CMAKE_BUILD_TYPE STREQUAL "Debug") set(suffix "d") endif() - rcl_init(osg_earth) - rcl_set_root_dir(osg_earth "${EXTERNAL_DIR}/${G_Architecture_Name}_osg_earth") - rcl_set_build_cache_root(osg_earth "C:/b/osg_earth") + + set(ctx "osg_earth") + rcl_init(${ctx}) + rcl_set_root_dir(${ctx} "${EXTERNAL_DIR}/${G_Architecture_Name}_osg_earth") + rcl_set_build_cache_root(${ctx} "C:/b/osg_earth") if(WIN32) - rcl_set_build_cache_root(osg_earth "C:/b/osg_earth") + rcl_set_build_cache_root(${ctx} "C:/b/osg_earth") endif() set(zlib_opts) list(APPEND zlib_opts @@ -16,13 +18,13 @@ block() -DCMAKE_DEBUG_POSTFIX=d -DZLIB_BUILD_EXAMPLES=OFF ) - _register_git_cmake_library(osg_earth + _register_git_cmake_library(${ctx} zlib "https://github.com/madler/zlib.git" "v1.3.1" ) - rcl_cmake_library_set_cmake_options(osg_earth zlib ${zlib_opts}) - rcl_get_effective_install_dir(osg_earth zlib ZLIB_ROOT) + rcl_cmake_library_set_cmake_options(${ctx} zlib ${zlib_opts}) + rcl_get_effective_install_dir(${ctx} zlib ZLIB_ROOT) set(ZLIB_DEBUG_SUFFIX) if (MSVC AND CMAKE_BUILD_TYPE STREQUAL "Debug") set(ZLIB_DEBUG_SUFFIX "d") @@ -38,7 +40,7 @@ block() set(ZLIB_LIBRARY "${ZLIB_ROOT}/lib/libz.so") endif () set(ZLIB_LIBRARIES "${ZLIB_LIBRARY}") - rcl_cmake_library_set_other_use_opt(osg_earth zlib + rcl_cmake_library_set_other_use_opt(${ctx} zlib "-DCMAKE_PREFIX_PATH=\"${ZLIB_ROOT}\"" "-DZLIB_ROOT=\"${ZLIB_ROOT}\"" "-DZLIB_INCLUDE_DIR=\"${ZLIB_INCLUDE_DIR}\"" @@ -47,7 +49,7 @@ block() "-DZLIB_LIBRARY_DEBUG=\"${ZLIB_LIBRARY_DEBUG}\"" "-DZLIB_LIBRARY_RELEASE=\"${ZLIB_LIBRARY_RELEASE}\"" ) - rcl_cmake_library_set_init_script(osg_earth zlib + rcl_cmake_library_set_init_script(${ctx} zlib "list(APPEND CMAKE_PREFIX_PATH \"${ZLIB_ROOT}\")" "set(ZLIB_ROOT \"${ZLIB_ROOT}\")" "set(ZLIB_INCLUDE_DIR \"${ZLIB_INCLUDE_DIR}\")" @@ -56,7 +58,7 @@ block() "set(ZLIB_LIBRARY_DEBUG \"${ZLIB_LIBRARY_DEBUG}\")" "set(ZLIB_LIBRARY_RELEASE \"${ZLIB_LIBRARY_RELEASE}\")" ) - rcl_cmake_library_set_clear_script(osg_earth zlib + rcl_cmake_library_set_clear_script(${ctx} zlib "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${ZLIB_ROOT}\")" "unset(ZLIB_ROOT)" "unset(ZLIB_INCLUDE_DIR)" @@ -78,14 +80,14 @@ block() "-DZLIB_INCLUDE_DIR=${ZLIB_INCLUDE_DIR}" "-DZLIB_LIBRARY=${ZLIB_LIBRARY}" ) - _register_git_cmake_library(osg_earth + _register_git_cmake_library(${ctx} png "https://github.com/pnggroup/libpng.git" "v1.6.50" ) - rcl_cmake_library_set_cmake_options(osg_earth png ${png_opts}) - rcl_cmake_library_set_deps(osg_earth png zlib) - rcl_get_effective_install_dir(osg_earth png PNG_ROOT) + rcl_cmake_library_set_cmake_options(${ctx} png ${png_opts}) + rcl_cmake_library_set_deps(${ctx} png zlib) + rcl_get_effective_install_dir(${ctx} png PNG_ROOT) set(PNG_INCLUDE_DIR "${PNG_ROOT}/include") set(PNG_PNG_INCLUDE_DIR "${PNG_ROOT}/include") if (MSVC) @@ -96,7 +98,7 @@ block() set(PNG_LIBRARIES "${PNG_LIBRARY}") set(PNG_LIBRARY_DEBUG "${PNG_LIBRARY}") set(PNG_LIBRARY_RELEASE "${PNG_LIBRARY}") - rcl_cmake_library_set_other_use_opt(osg_earth png + rcl_cmake_library_set_other_use_opt(${ctx} png "-DCMAKE_PREFIX_PATH=\"${PNG_ROOT}\"" "-DPNG_ROOT=\"${PNG_ROOT}\"" "-DPNG_INCLUDE_DIR=\"${PNG_INCLUDE_DIR}\"" @@ -106,7 +108,7 @@ block() "-DPNG_LIBRARY_DEBUG=\"${PNG_LIBRARY_DEBUG}\"" "-DPNG_LIBRARY_RELEASE=\"${PNG_LIBRARY_RELEASE}\"" ) - rcl_cmake_library_set_init_script(osg_earth png + rcl_cmake_library_set_init_script(${ctx} png "list(APPEND CMAKE_PREFIX_PATH \"${PNG_ROOT}\")" "set(PNG_ROOT \"${PNG_ROOT}\")" "set(PNG_INCLUDE_DIR \"${PNG_INCLUDE_DIR}\")" @@ -116,7 +118,7 @@ block() "set(PNG_LIBRARY_DEBUG \"${PNG_LIBRARY_DEBUG}\")" "set(PNG_LIBRARY_RELEASE \"${PNG_LIBRARY_RELEASE}\")" ) - rcl_cmake_library_set_clear_script(osg_earth png + rcl_cmake_library_set_clear_script(${ctx} png "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${PNG_ROOT}\")" "unset(PNG_ROOT)" "unset(PNG_INCLUDE_DIR)" @@ -136,13 +138,13 @@ block() -DWITH_TESTS=OFF -DWITH_JAVA=OFF ) - _register_git_cmake_library(osg_earth + _register_git_cmake_library(${ctx} jpeg "https://github.com/libjpeg-turbo/libjpeg-turbo.git" "3.1.2" ) - rcl_cmake_library_set_cmake_options(osg_earth jpeg ${jpeg_opts}) - rcl_get_effective_install_dir(osg_earth jpeg JPEG_ROOT) + rcl_cmake_library_set_cmake_options(${ctx} jpeg ${jpeg_opts}) + rcl_get_effective_install_dir(${ctx} jpeg JPEG_ROOT) set(JPEG_INCLUDE_DIR "${JPEG_ROOT}/include") if (MSVC) set(JPEG_LIBRARY "${JPEG_ROOT}/lib/jpeg.lib") @@ -152,7 +154,7 @@ block() set(JPEG_LIBRARIES "${JPEG_LIBRARY}") set(JPEG_LIBRARY_DEBUG "${JPEG_LIBRARY}") set(JPEG_LIBRARY_RELEASE "${JPEG_LIBRARY}") - rcl_cmake_library_set_other_use_opt(osg_earth jpeg + rcl_cmake_library_set_other_use_opt(${ctx} jpeg "-DCMAKE_PREFIX_PATH=\"${JPEG_ROOT}\"" "-DJPEG_ROOT=\"${JPEG_ROOT}\"" "-DJPEG_INCLUDE_DIR=\"${JPEG_INCLUDE_DIR}\"" @@ -161,7 +163,7 @@ block() "-DJPEG_LIBRARY_DEBUG=\"${JPEG_LIBRARY_DEBUG}\"" "-DJPEG_LIBRARY_RELEASE=\"${JPEG_LIBRARY_RELEASE}\"" ) - rcl_cmake_library_set_init_script(osg_earth jpeg + rcl_cmake_library_set_init_script(${ctx} jpeg "list(APPEND CMAKE_PREFIX_PATH \"${JPEG_ROOT}\")" "set(JPEG_ROOT \"${JPEG_ROOT}\")" "set(JPEG_INCLUDE_DIR \"${JPEG_INCLUDE_DIR}\")" @@ -170,7 +172,7 @@ block() "set(JPEG_LIBRARY_DEBUG \"${JPEG_LIBRARY_DEBUG}\")" "set(JPEG_LIBRARY_RELEASE \"${JPEG_LIBRARY_RELEASE}\")" ) - rcl_cmake_library_set_clear_script(osg_earth jpeg + rcl_cmake_library_set_clear_script(${ctx} jpeg "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${JPEG_ROOT}\")" "unset(JPEG_ROOT)" "unset(JPEG_INCLUDE_DIR)" @@ -207,14 +209,14 @@ block() "-DJPEG_INCLUDE_DIR=${JPEG_INCLUDE_DIR}" "-DJPEG_LIBRARY=${JPEG_LIBRARY}" ) - _register_git_cmake_library(osg_earth + _register_git_cmake_library(${ctx} tiff "https://github.com/libsdl-org/libtiff.git" "v4.7.0" ) - rcl_cmake_library_set_cmake_options(osg_earth tiff ${tiff_opts}) - rcl_cmake_library_set_deps(osg_earth tiff zlib jpeg) - rcl_get_effective_install_dir(osg_earth tiff TIFF_ROOT) + rcl_cmake_library_set_cmake_options(${ctx} tiff ${tiff_opts}) + rcl_cmake_library_set_deps(${ctx} tiff zlib jpeg) + rcl_get_effective_install_dir(${ctx} tiff TIFF_ROOT) set(TIFF_INCLUDE_DIR "${TIFF_ROOT}/include") if (MSVC) set(TIFF_LIBRARY_DEBUG "${TIFF_ROOT}/lib/tiffd.lib") @@ -230,7 +232,7 @@ block() set(TIFF_LIBRARY "${TIFF_ROOT}/lib/libtiff.so") endif () set(TIFF_LIBRARIES "${TIFF_LIBRARY}") - rcl_cmake_library_set_other_use_opt(osg_earth tiff + rcl_cmake_library_set_other_use_opt(${ctx} tiff "-DCMAKE_PREFIX_PATH=\"${TIFF_ROOT}\"" "-DTIFF_ROOT=\"${TIFF_ROOT}\"" "-DTIFF_INCLUDE_DIR=\"${TIFF_INCLUDE_DIR}\"" @@ -239,7 +241,7 @@ block() "-DTIFF_LIBRARY_DEBUG=\"${TIFF_LIBRARY_DEBUG}\"" "-DTIFF_LIBRARY_RELEASE=\"${TIFF_LIBRARY_RELEASE}\"" ) - rcl_cmake_library_set_init_script(osg_earth tiff + rcl_cmake_library_set_init_script(${ctx} tiff "list(APPEND CMAKE_PREFIX_PATH \"${TIFF_ROOT}\")" "set(TIFF_ROOT \"${TIFF_ROOT}\")" "set(TIFF_INCLUDE_DIR \"${TIFF_INCLUDE_DIR}\")" @@ -248,7 +250,7 @@ block() "set(TIFF_LIBRARY_DEBUG \"${TIFF_LIBRARY_DEBUG}\")" "set(TIFF_LIBRARY_RELEASE \"${TIFF_LIBRARY_RELEASE}\")" ) - rcl_cmake_library_set_clear_script(osg_earth tiff + rcl_cmake_library_set_clear_script(${ctx} tiff "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${TIFF_ROOT}\")" "unset(TIFF_ROOT)" "unset(TIFF_INCLUDE_DIR)" @@ -277,14 +279,14 @@ block() "-DPNG_PNG_INCLUDE_DIR=${PNG_PNG_INCLUDE_DIR}" "-DPNG_LIBRARY=${PNG_LIBRARY}" ) - _register_git_cmake_library(osg_earth + _register_git_cmake_library(${ctx} freetype "https://github.com/freetype/freetype.git" "VER-2-14-3" ) - rcl_cmake_library_set_cmake_options(osg_earth freetype ${freetype_opts}) - rcl_cmake_library_set_deps(osg_earth freetype zlib png) - rcl_get_effective_install_dir(osg_earth freetype FREETYPE_ROOT) + rcl_cmake_library_set_cmake_options(${ctx} freetype ${freetype_opts}) + rcl_cmake_library_set_deps(${ctx} freetype zlib png) + rcl_get_effective_install_dir(${ctx} freetype FREETYPE_ROOT) set(FREETYPE_INCLUDE_DIRS "${FREETYPE_ROOT}/include/freetype2") set(FREETYPE_INCLUDE_DIR_freetype2 "${FREETYPE_ROOT}/include/freetype2") set(FREETYPE_INCLUDE_DIR_ft2build "${FREETYPE_ROOT}/include/freetype2") @@ -296,7 +298,7 @@ block() set(FREETYPE_LIBRARIES "${FREETYPE_LIBRARY}") set(FREETYPE_LIBRARY_DEBUG "${FREETYPE_LIBRARY}") set(FREETYPE_LIBRARY_RELEASE "${FREETYPE_LIBRARY}") - rcl_cmake_library_set_other_use_opt(osg_earth freetype + rcl_cmake_library_set_other_use_opt(${ctx} freetype "-DCMAKE_PREFIX_PATH=\"${FREETYPE_ROOT}\"" "-DFREETYPE_ROOT=\"${FREETYPE_ROOT}\"" "-DFREETYPE_INCLUDE_DIRS=\"${FREETYPE_INCLUDE_DIRS}\"" @@ -307,7 +309,7 @@ block() "-DFREETYPE_LIBRARY_DEBUG=\"${FREETYPE_LIBRARY_DEBUG}\"" "-DFREETYPE_LIBRARY_RELEASE=\"${FREETYPE_LIBRARY_RELEASE}\"" ) - rcl_cmake_library_set_init_script(osg_earth freetype + rcl_cmake_library_set_init_script(${ctx} freetype "list(APPEND CMAKE_PREFIX_PATH \"${FREETYPE_ROOT}\")" "set(FREETYPE_ROOT \"${FREETYPE_ROOT}\")" "set(FREETYPE_INCLUDE_DIRS \"${FREETYPE_INCLUDE_DIRS}\")" @@ -318,7 +320,7 @@ block() "set(FREETYPE_LIBRARY_DEBUG \"${FREETYPE_LIBRARY_DEBUG}\")" "set(FREETYPE_LIBRARY_RELEASE \"${FREETYPE_LIBRARY_RELEASE}\")" ) - rcl_cmake_library_set_clear_script(osg_earth freetype + rcl_cmake_library_set_clear_script(${ctx} freetype "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${FREETYPE_ROOT}\")" "unset(FREETYPE_ROOT)" "unset(FREETYPE_INCLUDE_DIRS)" @@ -340,13 +342,13 @@ block() -DSQLITE_ENABLE_FTS5=ON -DSQLITE_OMIT_JSON=OFF ) - _register_git_cmake_library(osg_earth + _register_git_cmake_library(${ctx} sqlite3 "https://github.com/azadkuh/sqlite-amalgamation.git" "master" ) - rcl_cmake_library_set_cmake_options(osg_earth sqlite3 ${sqlite3_opts}) - rcl_get_effective_install_dir(osg_earth sqlite3 SQLITE3_ROOT) + rcl_cmake_library_set_cmake_options(${ctx} sqlite3 ${sqlite3_opts}) + rcl_get_effective_install_dir(${ctx} sqlite3 SQLITE3_ROOT) set(SQLITE3_INCLUDE_DIR "${SQLITE3_ROOT}/include") if (MSVC) set(SQLITE3_LIBRARY "${SQLITE3_ROOT}/lib/sqlite3${suffix}.lib") @@ -355,7 +357,7 @@ block() set(SQLITE3_LIBRARY "${SQLITE3_ROOT}/lib/libsqlite3.a") set(SQLITE3_EXECUTABLE "${SQLITE3_ROOT}/bin/sqlite3") endif () - rcl_cmake_library_set_other_use_opt(osg_earth sqlite3 + rcl_cmake_library_set_other_use_opt(${ctx} sqlite3 "-DCMAKE_PREFIX_PATH=\"${SQLITE3_ROOT}\"" "-DSQLite3_ROOT=\"${SQLITE3_ROOT}\"" "-DSQLite3_INCLUDE_DIR=\"${SQLITE3_INCLUDE_DIR}\"" @@ -365,7 +367,7 @@ block() "-DSQLite3_EXECUTABLE=\"${SQLITE3_EXECUTABLE}\"" "-DEXE_SQLITE3=\"${SQLITE3_EXECUTABLE}\"" ) - rcl_cmake_library_set_init_script(osg_earth sqlite3 + rcl_cmake_library_set_init_script(${ctx} sqlite3 "list(APPEND CMAKE_PREFIX_PATH \"${SQLITE3_ROOT}\")" "set(SQLite3_ROOT \"${SQLITE3_ROOT}\")" "set(SQLite3_INCLUDE_DIR \"${SQLITE3_INCLUDE_DIR}\")" @@ -375,7 +377,7 @@ block() "set(SQLite3_EXECUTABLE \"${SQLITE3_EXECUTABLE}\")" "set(EXE_SQLITE3 \"${SQLITE3_EXECUTABLE}\")" ) - rcl_cmake_library_set_clear_script(osg_earth sqlite3 + rcl_cmake_library_set_clear_script(${ctx} sqlite3 "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${SQLITE3_ROOT}\")" "unset(SQLite3_ROOT)" "unset(SQLite3_INCLUDE_DIR)" @@ -409,25 +411,25 @@ block() "-DZLIB_INCLUDE_DIR=${ZLIB_INCLUDE_DIR}" "-DZLIB_LIBRARY=${ZLIB_LIBRARY}" ) - _register_git_cmake_library(osg_earth + _register_git_cmake_library(${ctx} libzip "https://github.com/nih-at/libzip.git" "v1.11.4" ) - rcl_cmake_library_set_cmake_options(osg_earth libzip ${libzip_opts}) - rcl_cmake_library_set_deps(osg_earth libzip zlib) - rcl_get_effective_install_dir(osg_earth libzip LIBZIP_ROOT) - rcl_cmake_library_set_other_use_opt(osg_earth libzip + rcl_cmake_library_set_cmake_options(${ctx} libzip ${libzip_opts}) + rcl_cmake_library_set_deps(${ctx} libzip zlib) + rcl_get_effective_install_dir(${ctx} libzip LIBZIP_ROOT) + rcl_cmake_library_set_other_use_opt(${ctx} libzip "-DCMAKE_PREFIX_PATH=\"${LIBZIP_ROOT}\"" "-DLibZip_ROOT=\"${LIBZIP_ROOT}\"" "-DLIBZIP_ROOT=\"${LIBZIP_ROOT}\"" ) - rcl_cmake_library_set_init_script(osg_earth libzip + rcl_cmake_library_set_init_script(${ctx} libzip "list(APPEND CMAKE_PREFIX_PATH \"${LIBZIP_ROOT}\")" "set(LibZip_ROOT \"${LIBZIP_ROOT}\")" "set(LIBZIP_ROOT \"${LIBZIP_ROOT}\")" ) - rcl_cmake_library_set_clear_script(osg_earth libzip + rcl_cmake_library_set_clear_script(${ctx} libzip "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${LIBZIP_ROOT}\")" "unset(LibZip_ROOT)" "unset(LIBZIP_ROOT)" @@ -448,25 +450,25 @@ block() "-DZLIB_INCLUDE_DIR=${ZLIB_INCLUDE_DIR}" "-DZLIB_LIBRARY=${ZLIB_LIBRARY}" ) - _register_git_cmake_library(osg_earth + _register_git_cmake_library(${ctx} protobuf "https://github.com/protocolbuffers/protobuf.git" "v21.12" ) - rcl_cmake_library_set_cmake_options(osg_earth protobuf ${protobuf_opts}) - rcl_cmake_library_set_deps(osg_earth protobuf zlib) - rcl_get_effective_install_dir(osg_earth protobuf PROTOBUF_ROOT) - rcl_cmake_library_set_other_use_opt(osg_earth protobuf + rcl_cmake_library_set_cmake_options(${ctx} protobuf ${protobuf_opts}) + rcl_cmake_library_set_deps(${ctx} protobuf zlib) + rcl_get_effective_install_dir(${ctx} protobuf PROTOBUF_ROOT) + rcl_cmake_library_set_other_use_opt(${ctx} protobuf "-DCMAKE_PREFIX_PATH=\"${PROTOBUF_ROOT}\"" "-DProtobuf_ROOT=\"${PROTOBUF_ROOT}\"" "-DProtobuf_DIR=\"${PROTOBUF_ROOT}/lib/cmake/protobuf\"" ) - rcl_cmake_library_set_init_script(osg_earth protobuf + rcl_cmake_library_set_init_script(${ctx} protobuf "list(APPEND CMAKE_PREFIX_PATH \"${PROTOBUF_ROOT}\")" "set(Protobuf_ROOT \"${PROTOBUF_ROOT}\")" "set(Protobuf_DIR \"${PROTOBUF_ROOT}/lib/cmake/protobuf\")" ) - rcl_cmake_library_set_clear_script(osg_earth protobuf + rcl_cmake_library_set_clear_script(${ctx} protobuf "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${PROTOBUF_ROOT}\")" "unset(Protobuf_ROOT)" "unset(Protobuf_DIR)" @@ -479,24 +481,24 @@ block() -DBUILD_DOCUMENTATION=OFF -DBUILD_GEOSOP=OFF ) - _register_git_cmake_library(osg_earth + _register_git_cmake_library(${ctx} geos "https://github.com/libgeos/geos.git" "3.13.1" ) - rcl_cmake_library_set_cmake_options(osg_earth geos ${geos_opts}) - rcl_get_effective_install_dir(osg_earth geos GEOS_ROOT) - rcl_cmake_library_set_other_use_opt(osg_earth geos + rcl_cmake_library_set_cmake_options(${ctx} geos ${geos_opts}) + rcl_get_effective_install_dir(${ctx} geos GEOS_ROOT) + rcl_cmake_library_set_other_use_opt(${ctx} geos "-DCMAKE_PREFIX_PATH=\"${GEOS_ROOT}\"" "-DGEOS_ROOT=\"${GEOS_ROOT}\"" "-Dgeos_DIR=\"${GEOS_ROOT}/lib/cmake/GEOS\"" ) - rcl_cmake_library_set_init_script(osg_earth geos + rcl_cmake_library_set_init_script(${ctx} geos "list(APPEND CMAKE_PREFIX_PATH \"${GEOS_ROOT}\")" "set(GEOS_ROOT \"${GEOS_ROOT}\")" "set(geos_DIR \"${GEOS_ROOT}/lib/cmake/GEOS\")" ) - rcl_cmake_library_set_clear_script(osg_earth geos + rcl_cmake_library_set_clear_script(${ctx} geos "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${GEOS_ROOT}\")" "unset(GEOS_ROOT)" "unset(geos_DIR)" @@ -531,14 +533,14 @@ block() -DUSE_WIN32_IDN=ON ) endif () - _register_git_cmake_library(osg_earth + _register_git_cmake_library(${ctx} curl "https://github.com/curl/curl.git" "curl-8_21_0" ) - rcl_cmake_library_set_cmake_options(osg_earth curl ${curl_opts}) - rcl_cmake_library_set_deps(osg_earth curl zlib) - rcl_get_effective_install_dir(osg_earth curl CURL_ROOT) + rcl_cmake_library_set_cmake_options(${ctx} curl ${curl_opts}) + rcl_cmake_library_set_deps(${ctx} curl zlib) + rcl_get_effective_install_dir(${ctx} curl CURL_ROOT) if (MSVC) set(CURL_LIBRARY_DEBUG "${CURL_ROOT}/lib/libcurl-d_imp.lib") set(CURL_LIBRARY_RELEASE "${CURL_ROOT}/lib/libcurl_imp.lib") @@ -553,7 +555,7 @@ block() set(CURL_LIBRARY "${CURL_ROOT}/lib/libcurl.so") endif () set(CURL_LIBRARIES "${CURL_LIBRARY}") - rcl_cmake_library_set_other_use_opt(osg_earth curl + rcl_cmake_library_set_other_use_opt(${ctx} curl "-DCMAKE_PREFIX_PATH=\"${CURL_ROOT}\"" "-DCURL_ROOT=\"${CURL_ROOT}\"" "-DCURL_LIBRARY=\"${CURL_LIBRARY}\"" @@ -561,7 +563,7 @@ block() "-DCURL_LIBRARY_DEBUG=\"${CURL_LIBRARY_DEBUG}\"" "-DCURL_LIBRARY_RELEASE=\"${CURL_LIBRARY_RELEASE}\"" ) - rcl_cmake_library_set_init_script(osg_earth curl + rcl_cmake_library_set_init_script(${ctx} curl "list(APPEND CMAKE_PREFIX_PATH \"${CURL_ROOT}\")" "set(CURL_ROOT \"${CURL_ROOT}\")" "set(CURL_LIBRARY \"${CURL_LIBRARY}\")" @@ -569,7 +571,7 @@ block() "set(CURL_LIBRARY_DEBUG \"${CURL_LIBRARY_DEBUG}\")" "set(CURL_LIBRARY_RELEASE \"${CURL_LIBRARY_RELEASE}\")" ) - rcl_cmake_library_set_clear_script(osg_earth curl + rcl_cmake_library_set_clear_script(${ctx} curl "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${CURL_ROOT}\")" "unset(CURL_ROOT)" "unset(CURL_LIBRARY)" @@ -596,23 +598,23 @@ block() "-DTIFF_INCLUDE_DIR=${TIFF_INCLUDE_DIR}" "-DTIFF_LIBRARY=${TIFF_LIBRARY}" ) - _register_git_cmake_library(osg_earth + _register_git_cmake_library(${ctx} proj "https://github.com/OSGeo/PROJ.git" "9.4.1" ) - rcl_cmake_library_set_cmake_options(osg_earth proj ${proj_opts}) - rcl_cmake_library_set_deps(osg_earth proj sqlite3 curl tiff) - rcl_get_effective_install_dir(osg_earth proj PROJ_ROOT) - rcl_cmake_library_set_other_use_opt(osg_earth proj + rcl_cmake_library_set_cmake_options(${ctx} proj ${proj_opts}) + rcl_cmake_library_set_deps(${ctx} proj sqlite3 curl tiff) + rcl_get_effective_install_dir(${ctx} proj PROJ_ROOT) + rcl_cmake_library_set_other_use_opt(${ctx} proj "-DCMAKE_PREFIX_PATH=\"${PROJ_ROOT}\"" "-DPROJ_ROOT=\"${PROJ_ROOT}\"" ) - rcl_cmake_library_set_init_script(osg_earth proj + rcl_cmake_library_set_init_script(${ctx} proj "list(APPEND CMAKE_PREFIX_PATH \"${PROJ_ROOT}\")" "set(PROJ_ROOT \"${PROJ_ROOT}\")" ) - rcl_cmake_library_set_clear_script(osg_earth proj + rcl_cmake_library_set_clear_script(${ctx} proj "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${PROJ_ROOT}\")" "unset(PROJ_ROOT)" ) @@ -657,14 +659,14 @@ block() "-DPROJ_ROOT=${PROJ_ROOT}" "-DGEOS_ROOT=${GEOS_ROOT}" ) - _register_git_cmake_library(osg_earth + _register_git_cmake_library(${ctx} gdal "https://github.com/OSGeo/gdal.git" "v3.9.3" ) - rcl_cmake_library_set_cmake_options(osg_earth gdal ${gdal_opts}) - rcl_cmake_library_set_deps(osg_earth gdal zlib png jpeg tiff curl sqlite3 proj geos) - rcl_get_effective_install_dir(osg_earth gdal GDAL_ROOT) + rcl_cmake_library_set_cmake_options(${ctx} gdal ${gdal_opts}) + rcl_cmake_library_set_deps(${ctx} gdal zlib png jpeg tiff curl sqlite3 proj geos) + rcl_get_effective_install_dir(${ctx} gdal GDAL_ROOT) set(GDAL_INCLUDE_DIR "${GDAL_ROOT}/include") if (MSVC) set(GDAL_LIBRARY_DEBUG "${GDAL_ROOT}/lib/gdald.lib") @@ -680,7 +682,7 @@ block() set(GDAL_LIBRARY "${GDAL_ROOT}/lib/libgdal.so") endif () set(GDAL_LIBRARIES "${GDAL_LIBRARY}") - rcl_cmake_library_set_other_use_opt(osg_earth gdal + rcl_cmake_library_set_other_use_opt(${ctx} gdal "-DCMAKE_PREFIX_PATH=\"${GDAL_ROOT}\"" "-DGDAL_ROOT=\"${GDAL_ROOT}\"" "-DGDAL_INCLUDE_DIR=\"${GDAL_INCLUDE_DIR}\"" @@ -689,7 +691,7 @@ block() "-DGDAL_LIBRARY_DEBUG=\"${GDAL_LIBRARY_DEBUG}\"" "-DGDAL_LIBRARY_RELEASE=\"${GDAL_LIBRARY_RELEASE}\"" ) - rcl_cmake_library_set_init_script(osg_earth gdal + rcl_cmake_library_set_init_script(${ctx} gdal "list(APPEND CMAKE_PREFIX_PATH \"${GDAL_ROOT}\")" "set(GDAL_ROOT \"${GDAL_ROOT}\")" "set(GDAL_INCLUDE_DIR \"${GDAL_INCLUDE_DIR}\")" @@ -698,7 +700,7 @@ block() "set(GDAL_LIBRARY_DEBUG \"${GDAL_LIBRARY_DEBUG}\")" "set(GDAL_LIBRARY_RELEASE \"${GDAL_LIBRARY_RELEASE}\")" ) - rcl_cmake_library_set_clear_script(osg_earth gdal + rcl_cmake_library_set_clear_script(${ctx} gdal "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${GDAL_ROOT}\")" "unset(GDAL_ROOT)" "unset(GDAL_INCLUDE_DIR)" @@ -760,19 +762,19 @@ block() if (MSVC) list(APPEND osg_opts -DWIN32_USE_MP=ON) endif () - _register_git_cmake_library(osg_earth + _register_git_cmake_library(${ctx} openscenegraph "https://github.com/openscenegraph/OpenSceneGraph.git" "OpenSceneGraph-3.6.5" ) - rcl_cmake_library_add_patch_url(osg_earth openscenegraph + rcl_cmake_library_add_patch_url(${ctx} openscenegraph "https://github.com/openscenegraph/OpenSceneGraph/pull/973.patch" "001-pr-973-msvc-ninja-pdb.patch" "" ) - rcl_cmake_library_set_cmake_options(osg_earth openscenegraph ${osg_opts}) - rcl_cmake_library_set_deps(osg_earth openscenegraph zlib png jpeg tiff freetype curl gdal) - rcl_get_effective_install_dir(osg_earth openscenegraph OSG_ROOT) + rcl_cmake_library_set_cmake_options(${ctx} openscenegraph ${osg_opts}) + rcl_cmake_library_set_deps(${ctx} openscenegraph zlib png jpeg tiff freetype curl gdal) + rcl_get_effective_install_dir(${ctx} openscenegraph OSG_ROOT) set(OSG_DEBUG_SUFFIX) if (MSVC AND CMAKE_BUILD_TYPE STREQUAL "Debug") set(OSG_DEBUG_SUFFIX "d") @@ -835,9 +837,9 @@ block() "unset(${OSG_COMPONENT_LIBRARY_VAR})" ) endforeach () - rcl_cmake_library_set_other_use_opt(osg_earth openscenegraph ${osg_other_use_opt}) - rcl_cmake_library_set_init_script(osg_earth openscenegraph ${osg_init_script}) - rcl_cmake_library_set_clear_script(osg_earth openscenegraph ${osg_clear_script}) + rcl_cmake_library_set_other_use_opt(${ctx} openscenegraph ${osg_other_use_opt}) + rcl_cmake_library_set_init_script(${ctx} openscenegraph ${osg_init_script}) + rcl_cmake_library_set_clear_script(${ctx} openscenegraph ${osg_clear_script}) set(OSGEARTH_PREFIX_PATH "${OSG_ROOT}" "${SQLITE3_ROOT}" @@ -893,14 +895,14 @@ block() if (WIN32) list(APPEND osgearth_opts -DOSGEARTH_INSTALL_PDBS=ON) endif () - _register_git_cmake_library(osg_earth + _register_git_cmake_library(${ctx} osgearth "https://github.com/pelicanmapping/osgearth.git" "osgearth-3.8.1" ) - rcl_cmake_library_set_cmake_options(osg_earth osgearth ${osgearth_opts}) - rcl_cmake_library_set_deps(osg_earth osgearth openscenegraph sqlite3 curl proj gdal libzip protobuf geos zlib png jpeg tiff freetype) - rcl_get_effective_install_dir(osg_earth osgearth OSGEARTH_ROOT) + rcl_cmake_library_set_cmake_options(${ctx} osgearth ${osgearth_opts}) + rcl_cmake_library_set_deps(${ctx} osgearth openscenegraph sqlite3 curl proj gdal libzip protobuf geos zlib png jpeg tiff freetype) + rcl_get_effective_install_dir(${ctx} osgearth OSGEARTH_ROOT) set(osgEarth_DIR "${OSGEARTH_ROOT}/lib/cmake/osgearth") set(OSGEARTH_DEBUG_SUFFIX) if (MSVC AND CMAKE_BUILD_TYPE STREQUAL "Debug") @@ -928,7 +930,7 @@ block() "${FREETYPE_ROOT}" ) list(JOIN OSGEARTH_USE_PREFIX_PATH "\\;" OSGEARTH_USE_PREFIX_PATH_ARG) - rcl_cmake_library_set_other_use_opt(osg_earth osgearth + rcl_cmake_library_set_other_use_opt(${ctx} osgearth "-DCMAKE_PREFIX_PATH=\"${OSGEARTH_USE_PREFIX_PATH_ARG}\"" "-DosgEarth_DIR=\"${osgEarth_DIR}\"" "-DOSGEARTH_ROOT=\"${OSGEARTH_ROOT}\"" @@ -954,6 +956,6 @@ block() "unset(OSGEARTH_INCLUDE_DIR)" "unset(OSGEARTH_LIBRARY)" ) - rcl_cmake_library_set_init_script(osg_earth osgearth ${osgearth_init_script}) - rcl_cmake_library_set_clear_script(osg_earth osgearth ${osgearth_clear_script}) + rcl_cmake_library_set_init_script(${ctx} osgearth ${osgearth_init_script}) + rcl_cmake_library_set_clear_script(${ctx} osgearth ${osgearth_clear_script}) endblock() diff --git a/0_cmake_library/register/vsg_cesium.cmake b/0_cmake_library/register/vsg_cesium.cmake new file mode 100644 index 0000000..d78e838 --- /dev/null +++ b/0_cmake_library/register/vsg_cesium.cmake @@ -0,0 +1,331 @@ +include_guard(GLOBAL) +block() + set(ctx "vsg_cesium") + rcl_init(${ctx}) + rcl_set_root_dir(${ctx} "${EXTERNAL_DIR}/${G_Architecture_Name}_vsg_cesium") + if(WIN32) + set(VSG_CESIUM_BUILD_CACHE_ROOT "C:/b/vsg_cesium") + rcl_set_build_cache_root(${ctx} "${VSG_CESIUM_BUILD_CACHE_ROOT}") + endif() + rcl_get_root_dir(${ctx} VSG_CESIUM_ROOT) + if(NOT DEFINED ENV{VULKAN_SDK} OR "$ENV{VULKAN_SDK}" STREQUAL "") + message(FATAL_ERROR "VulkanSceneGraph requires VULKAN_SDK") + endif() + file(TO_CMAKE_PATH "$ENV{VULKAN_SDK}" VULKAN_SDK_ROOT) + string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" system_processor) + set(CESIUM_VCPKG_OVERLAY_TRIPLETS "") + if(WIN32) + if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8) + message(FATAL_ERROR "vsg_cesium only supports 64-bit Windows") + endif() + if(NOT CMAKE_CXX_COMPILER) + message(FATAL_ERROR "CMAKE_CXX_COMPILER is not set") + endif() + set(CESIUM_VCPKG_TRIPLET "x64-windows-static-md") + set(CESIUM_VCPKG_CONFIG_DIR "${CMAKE_CURRENT_LIST_DIR}/generated/vsg_cesium") + set(CESIUM_VCPKG_OVERLAY_TRIPLETS "${CESIUM_VCPKG_CONFIG_DIR}/triplets") + set(CESIUM_VCPKG_CHAINLOAD_TOOLCHAIN "${CESIUM_VCPKG_CONFIG_DIR}/current_compiler.cmake") + file(MAKE_DIRECTORY "${CESIUM_VCPKG_OVERLAY_TRIPLETS}") + file(TO_CMAKE_PATH "${CMAKE_CXX_COMPILER}" CESIUM_CXX_COMPILER) + string(CONCAT CESIUM_VCPKG_CHAINLOAD_CONTENT + "set(CMAKE_CXX_COMPILER [[${CESIUM_CXX_COMPILER}]] CACHE FILEPATH \"\" FORCE)\n" + ) + if(CMAKE_C_COMPILER) + file(TO_CMAKE_PATH "${CMAKE_C_COMPILER}" CESIUM_C_COMPILER) + string(PREPEND CESIUM_VCPKG_CHAINLOAD_CONTENT + "set(CMAKE_C_COMPILER [[${CESIUM_C_COMPILER}]] CACHE FILEPATH \"\" FORCE)\n" + ) + endif() + if(CMAKE_RC_COMPILER) + file(TO_CMAKE_PATH "${CMAKE_RC_COMPILER}" CESIUM_RC_COMPILER) + string(APPEND CESIUM_VCPKG_CHAINLOAD_CONTENT + "set(CMAKE_RC_COMPILER [[${CESIUM_RC_COMPILER}]] CACHE FILEPATH \"\" FORCE)\n" + ) + endif() + file(CONFIGURE + OUTPUT "${CESIUM_VCPKG_CHAINLOAD_TOOLCHAIN}" + CONTENT "${CESIUM_VCPKG_CHAINLOAD_CONTENT}" + @ONLY + ) + string(CONCAT CESIUM_VCPKG_TRIPLET_CONTENT + "set(VCPKG_TARGET_ARCHITECTURE x64)\n" + "set(VCPKG_CRT_LINKAGE dynamic)\n" + "set(VCPKG_LIBRARY_LINKAGE static)\n" + "set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE [[${CESIUM_VCPKG_CHAINLOAD_TOOLCHAIN}]])\n" + ) + if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + string(FIND "${CESIUM_CXX_COMPILER}" "/VC/Tools/MSVC/" CESIUM_VS_ROOT_END) + if(CESIUM_VS_ROOT_END EQUAL -1) + message(FATAL_ERROR "Unable to determine Visual Studio root from CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") + endif() + string(SUBSTRING "${CESIUM_CXX_COMPILER}" 0 ${CESIUM_VS_ROOT_END} CESIUM_VS_ROOT) + string(APPEND CESIUM_VCPKG_TRIPLET_CONTENT + "set(VCPKG_VISUAL_STUDIO_PATH [[${CESIUM_VS_ROOT}]])\n" + ) + endif() + file(CONFIGURE + OUTPUT "${CESIUM_VCPKG_OVERLAY_TRIPLETS}/${CESIUM_VCPKG_TRIPLET}.cmake" + CONTENT "${CESIUM_VCPKG_TRIPLET_CONTENT}" + @ONLY + ) + elseif(APPLE) + if(system_processor MATCHES "^(arm64|aarch64)$") + set(CESIUM_VCPKG_TRIPLET "arm64-osx") + else() + set(CESIUM_VCPKG_TRIPLET "x64-osx") + endif() + elseif(UNIX) + if(system_processor MATCHES "^(arm64|aarch64)$") + set(CESIUM_VCPKG_TRIPLET "arm64-linux") + else() + set(CESIUM_VCPKG_TRIPLET "x64-linux") + endif() + else() + message(FATAL_ERROR "vsg_cesium does not support this platform") + endif() + set(CESIUM_VCPKG_COMMIT "dbe35ceb30c688bf72e952ab23778e009a578f18") + if(WIN32) + set(CESIUM_EZVCPKG_BASE "${VSG_CESIUM_BUILD_CACHE_ROOT}/ezvcpkg") + else() + set(CESIUM_EZVCPKG_BASE "${VSG_CESIUM_ROOT}/ezvcpkg") + endif() + set(CESIUM_EZVCPKG_REPOSITORY "${CESIUM_EZVCPKG_BASE}/${CESIUM_VCPKG_COMMIT}") + set(CESIUM_EZVCPKG_INSTALLED "${CESIUM_EZVCPKG_REPOSITORY}/installed/${CESIUM_VCPKG_TRIPLET}") + set(CESIUM_VCPKG_TOOLCHAIN "${CESIUM_EZVCPKG_REPOSITORY}/scripts/buildsystems/vcpkg.cmake") + set(cesium_native_opts) + list(APPEND cesium_native_opts + -DCESIUM_USE_EZVCPKG=ON + -DEZVCPKG_BASEDIR=${CESIUM_EZVCPKG_BASE} + -DVCPKG_MANIFEST_MODE=OFF + -DVCPKG_TRIPLET=${CESIUM_VCPKG_TRIPLET} + -DVCPKG_TARGET_TRIPLET=${CESIUM_VCPKG_TRIPLET} + -DVCPKG_OVERLAY_TRIPLETS=${CESIUM_VCPKG_OVERLAY_TRIPLETS} + -DCESIUM_INSTALL_STATIC_LIBS=ON + -DCESIUM_INSTALL_HEADERS=ON + -DCESIUM_TESTS_ENABLED=OFF + -DCESIUM_ENABLE_CLANG_TIDY=OFF + -DCESIUM_ENABLE_CLANG_TIDY_ON_BUILD=OFF + -DCESIUM_DISABLE_CURL=OFF + -DCESIUM_TRACING_ENABLED=OFF + -DCESIUM_COVERAGE_ENABLED=OFF + -DCESIUM_MSVC_STATIC_RUNTIME_ENABLED=OFF + -DCMAKE_CXX_STANDARD=20 + ) + _register_git_cmake_library(${ctx} + cesium_native + "https://github.com/CesiumGS/cesium-native.git" + "v0.50.0" + ) + rcl_cmake_library_set_cmake_options(${ctx} cesium_native ${cesium_native_opts}) + rcl_get_effective_install_dir(${ctx} cesium_native CESIUM_NATIVE_ROOT) + set(CESIUM_NATIVE_DIR "${CESIUM_NATIVE_ROOT}/share/cesium-native/cmake") + set(CESIUM_NATIVE_USE_PREFIX_PATH + "${CESIUM_NATIVE_ROOT}" + "${CESIUM_EZVCPKG_INSTALLED}" + ) + list(JOIN CESIUM_NATIVE_USE_PREFIX_PATH "\\;" CESIUM_NATIVE_USE_PREFIX_PATH_ARG) + rcl_cmake_library_set_other_use_opt(${ctx} cesium_native + "-DCMAKE_PREFIX_PATH=\"${CESIUM_NATIVE_USE_PREFIX_PATH_ARG}\"" + "-DCMAKE_TOOLCHAIN_FILE=\"${CESIUM_VCPKG_TOOLCHAIN}\"" + "-DVCPKG_MANIFEST_MODE=OFF" + "-DVCPKG_TARGET_TRIPLET=\"${CESIUM_VCPKG_TRIPLET}\"" + "-DVCPKG_OVERLAY_TRIPLETS=\"${CESIUM_VCPKG_OVERLAY_TRIPLETS}\"" + "-Dcesium-native_DIR=\"${CESIUM_NATIVE_DIR}\"" + "-DCESIUM_NATIVE_ROOT=\"${CESIUM_NATIVE_ROOT}\"" + "-DCESIUM_EZVCPKG_INSTALLED=\"${CESIUM_EZVCPKG_INSTALLED}\"" + ) + rcl_cmake_library_set_init_script(${ctx} cesium_native + "list(APPEND CMAKE_PREFIX_PATH \"${CESIUM_NATIVE_ROOT}\")" + "list(APPEND CMAKE_PREFIX_PATH \"${CESIUM_EZVCPKG_INSTALLED}\")" + "set(cesium-native_DIR \"${CESIUM_NATIVE_DIR}\")" + "set(CESIUM_NATIVE_ROOT \"${CESIUM_NATIVE_ROOT}\")" + "set(CESIUM_EZVCPKG_INSTALLED \"${CESIUM_EZVCPKG_INSTALLED}\")" + "find_package(cesium-native CONFIG REQUIRED)" + ) + rcl_cmake_library_set_clear_script(${ctx} cesium_native + "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${CESIUM_NATIVE_ROOT}\")" + "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${CESIUM_EZVCPKG_INSTALLED}\")" + "unset(cesium-native_DIR)" + "unset(CESIUM_NATIVE_ROOT)" + "unset(CESIUM_EZVCPKG_INSTALLED)" + ) + set(vsg_opts) + list(APPEND vsg_opts + -DBUILD_SHARED_LIBS=ON + -DVULKAN_SDK=${VULKAN_SDK_ROOT} + -DVSG_SUPPORTS_Windowing=ON + -DVSG_SUPPORTS_ShaderCompiler=ON + -DVSG_SUPPORTS_ShaderOptimizer=ON + -DVSG_MAX_INSTRUMENTATION_LEVEL=1 + -DVSG_USE_dynamic_cast=OFF + ) + _register_git_cmake_library(${ctx} + vsg + "https://github.com/vsg-dev/VulkanSceneGraph.git" + "v1.1.15" + ) + rcl_cmake_library_set_cmake_options(${ctx} vsg ${vsg_opts}) + rcl_get_effective_install_dir(${ctx} vsg VSG_ROOT) + set(vsg_DIR "${VSG_ROOT}/lib/cmake/vsg") + rcl_cmake_library_set_other_use_opt(${ctx} vsg + "-DCMAKE_PREFIX_PATH=\"${VSG_ROOT}\"" + "-Dvsg_DIR=\"${vsg_DIR}\"" + "-DVULKAN_SDK=\"${VULKAN_SDK_ROOT}\"" + ) + rcl_cmake_library_set_init_script(${ctx} vsg + "list(APPEND CMAKE_PREFIX_PATH \"${VSG_ROOT}\")" + "set(vsg_DIR \"${vsg_DIR}\")" + "set(VULKAN_SDK \"${VULKAN_SDK_ROOT}\")" + "find_package(vsg CONFIG REQUIRED)" + ) + rcl_cmake_library_set_clear_script(${ctx} vsg + "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${VSG_ROOT}\")" + "unset(vsg_DIR)" + "unset(VULKAN_SDK)" + ) + set(VSGXCHANGE_PREFIX_PATH + "${VSG_ROOT}" + "${CESIUM_EZVCPKG_INSTALLED}" + "${VULKAN_SDK_ROOT}" + ) + list(JOIN VSGXCHANGE_PREFIX_PATH "\\;" VSGXCHANGE_PREFIX_PATH_ARG) + set(vsgxchange_opts) + list(APPEND vsgxchange_opts + -DBUILD_SHARED_LIBS=ON + -DVULKAN_SDK=${VULKAN_SDK_ROOT} + -Dvsg_DIR=${vsg_DIR} + -DvsgXchange_OSG=OFF + -DCMAKE_TOOLCHAIN_FILE=${CESIUM_VCPKG_TOOLCHAIN} + -DVCPKG_MANIFEST_MODE=OFF + -DVCPKG_TARGET_TRIPLET=${CESIUM_VCPKG_TRIPLET} + -DVCPKG_OVERLAY_TRIPLETS=${CESIUM_VCPKG_OVERLAY_TRIPLETS} + "-DCMAKE_PREFIX_PATH=${VSGXCHANGE_PREFIX_PATH_ARG}" + ) + _register_git_cmake_library(${ctx} + vsgxchange + "https://github.com/vsg-dev/vsgXchange.git" + "v1.1.13" + ) + rcl_cmake_library_set_cmake_options(${ctx} vsgxchange ${vsgxchange_opts}) + rcl_cmake_library_set_deps(${ctx} vsgxchange vsg cesium_native) + rcl_get_effective_install_dir(${ctx} vsgxchange VSGXCHANGE_ROOT) + set(vsgXchange_DIR "${VSGXCHANGE_ROOT}/lib/cmake/vsgXchange") + rcl_cmake_library_set_other_use_opt(${ctx} vsgxchange + "-DCMAKE_PREFIX_PATH=\"${VSGXCHANGE_ROOT}\\;${VSG_ROOT}\\;${CESIUM_EZVCPKG_INSTALLED}\"" + "-DvsgXchange_DIR=\"${vsgXchange_DIR}\"" + "-Dvsg_DIR=\"${vsg_DIR}\"" + ) + rcl_cmake_library_set_init_script(${ctx} vsgxchange + "list(APPEND CMAKE_PREFIX_PATH \"${VSGXCHANGE_ROOT}\")" + "set(vsgXchange_DIR \"${vsgXchange_DIR}\")" + "find_package(vsgXchange CONFIG REQUIRED)" + ) + rcl_cmake_library_set_clear_script(${ctx} vsgxchange + "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${VSGXCHANGE_ROOT}\")" + "unset(vsgXchange_DIR)" + ) + set(VSGIMGUI_PREFIX_PATH + "${VSG_ROOT}" + "${VULKAN_SDK_ROOT}" + ) + list(JOIN VSGIMGUI_PREFIX_PATH "\\;" VSGIMGUI_PREFIX_PATH_ARG) + set(vsgimgui_opts) + list(APPEND vsgimgui_opts + -DBUILD_SHARED_LIBS=ON + -DVULKAN_SDK=${VULKAN_SDK_ROOT} + -Dvsg_DIR=${vsg_DIR} + "-DCMAKE_PREFIX_PATH=${VSGIMGUI_PREFIX_PATH_ARG}" + ) + _register_git_cmake_library(${ctx} + vsgimgui + "https://github.com/vsg-dev/vsgImGui.git" + "v0.7.0" + ) + rcl_cmake_library_set_cmake_options(${ctx} vsgimgui ${vsgimgui_opts}) + rcl_cmake_library_set_deps(${ctx} vsgimgui vsg) + rcl_get_effective_install_dir(${ctx} vsgimgui VSGIMGUI_ROOT) + set(vsgImGui_DIR "${VSGIMGUI_ROOT}/lib/cmake/vsgImGui") + rcl_cmake_library_set_other_use_opt(${ctx} vsgimgui + "-DCMAKE_PREFIX_PATH=\"${VSGIMGUI_ROOT}\\;${VSG_ROOT}\"" + "-DvsgImGui_DIR=\"${vsgImGui_DIR}\"" + "-Dvsg_DIR=\"${vsg_DIR}\"" + ) + rcl_cmake_library_set_init_script(${ctx} vsgimgui + "list(APPEND CMAKE_PREFIX_PATH \"${VSGIMGUI_ROOT}\")" + "set(vsgImGui_DIR \"${vsgImGui_DIR}\")" + "find_package(vsgImGui CONFIG REQUIRED)" + ) + rcl_cmake_library_set_clear_script(${ctx} vsgimgui + "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${VSGIMGUI_ROOT}\")" + "unset(vsgImGui_DIR)" + ) + set(VSGCS_PREFIX_PATH + "${VSG_ROOT}" + "${VSGXCHANGE_ROOT}" + "${VSGIMGUI_ROOT}" + "${CESIUM_NATIVE_ROOT}" + "${CESIUM_EZVCPKG_INSTALLED}" + "${VULKAN_SDK_ROOT}" + ) + list(JOIN VSGCS_PREFIX_PATH "\\;" VSGCS_PREFIX_PATH_ARG) + set(vsgcs_opts) + list(APPEND vsgcs_opts + -DBUILD_SHARED_LIBS=ON + -DVSGCS_BUILD_SHARED_LIBS=ON + -DVSGCS_USE_PROJ=ON + -DVSGCS_INSTALL_PROJ_DATA=ON + -DVSGCS_USE_SYSTEM_OPENSSL=OFF + -DRUN_CLANG_TIDY=OFF + -DBUILD_TRACY=OFF + -DVULKAN_SDK=${VULKAN_SDK_ROOT} + -Dvsg_DIR=${vsg_DIR} + -DvsgXchange_DIR=${vsgXchange_DIR} + -DvsgImGui_DIR=${vsgImGui_DIR} + -Dcesium-native_DIR=${CESIUM_NATIVE_DIR} + -DCMAKE_TOOLCHAIN_FILE=${CESIUM_VCPKG_TOOLCHAIN} + -DVCPKG_MANIFEST_MODE=OFF + -DVCPKG_TARGET_TRIPLET=${CESIUM_VCPKG_TRIPLET} + -DVCPKG_OVERLAY_TRIPLETS=${CESIUM_VCPKG_OVERLAY_TRIPLETS} + "-DCMAKE_PREFIX_PATH=${VSGCS_PREFIX_PATH_ARG}" + ) + _register_git_cmake_library(${ctx} + vsgcs + "https://github.com/timoore/vsgCs.git" + "v1.2.0" + ) + rcl_cmake_library_set_cmake_options(${ctx} vsgcs ${vsgcs_opts}) + rcl_cmake_library_set_deps(${ctx} vsgcs vsg vsgxchange vsgimgui cesium_native) + rcl_get_effective_install_dir(${ctx} vsgcs VSGCS_ROOT) + set(vsgCs_DIR "${VSGCS_ROOT}/lib/cmake/vsgCs") + set(VSGCS_USE_PREFIX_PATH + "${VSGCS_ROOT}" + "${VSG_ROOT}" + "${VSGXCHANGE_ROOT}" + "${VSGIMGUI_ROOT}" + "${CESIUM_NATIVE_ROOT}" + "${CESIUM_EZVCPKG_INSTALLED}" + ) + list(JOIN VSGCS_USE_PREFIX_PATH "\\;" VSGCS_USE_PREFIX_PATH_ARG) + rcl_cmake_library_set_other_use_opt(${ctx} vsgcs + "-DCMAKE_PREFIX_PATH=\"${VSGCS_USE_PREFIX_PATH_ARG}\"" + "-DCMAKE_TOOLCHAIN_FILE=\"${CESIUM_VCPKG_TOOLCHAIN}\"" + "-DVCPKG_MANIFEST_MODE=OFF" + "-DVCPKG_TARGET_TRIPLET=\"${CESIUM_VCPKG_TRIPLET}\"" + "-DVCPKG_OVERLAY_TRIPLETS=\"${CESIUM_VCPKG_OVERLAY_TRIPLETS}\"" + "-DvsgCs_DIR=\"${vsgCs_DIR}\"" + "-Dvsg_DIR=\"${vsg_DIR}\"" + "-DvsgXchange_DIR=\"${vsgXchange_DIR}\"" + "-DvsgImGui_DIR=\"${vsgImGui_DIR}\"" + "-Dcesium-native_DIR=\"${CESIUM_NATIVE_DIR}\"" + "-DVULKAN_SDK=\"${VULKAN_SDK_ROOT}\"" + ) + rcl_cmake_library_set_init_script(${ctx} vsgcs + "list(APPEND CMAKE_PREFIX_PATH \"${VSGCS_ROOT}\")" + "set(vsgCs_DIR \"${vsgCs_DIR}\")" + "find_package(vsgCs CONFIG REQUIRED)" + ) + rcl_cmake_library_set_clear_script(${ctx} vsgcs + "list(REMOVE_ITEM CMAKE_PREFIX_PATH \"${VSGCS_ROOT}\")" + "unset(vsgCs_DIR)" + ) +endblock() diff --git a/end.cmake b/end.cmake index 1d00c20..9c08722 100644 --- a/end.cmake +++ b/end.cmake @@ -15,6 +15,7 @@ include(${register_dir}/export.cmake) # 统一生成前面注册过的所有配置对象和 action target rcl_generate_registered_cmake_libraries(global) rcl_generate_registered_cmake_libraries(osg_earth) +rcl_generate_registered_cmake_libraries(vsg_cesium) attach_current_source_dir()