From 9228f343ff95fc5b6c82edf3c3865b0149a3950a Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Sat, 24 Jan 2026 17:30:54 +0800 Subject: [PATCH] chore: change build script to make BMap can be used by CMake - change script for installing BMap like LibCmo although no one will use it. - move package install command into respective cmake script. - change BMap project layout --- BMap/{ => BMap}/BMExports.cpp | 0 BMap/{ => BMap}/BMExports.hpp | 0 BMap/{ => BMap}/BMap.cpp | 0 BMap/{ => BMap}/BMap.hpp | 0 BMap/CMakeLists.txt | 48 ++++++++++++++++++++++++++++------- CMake/BMapConfig.cmake.in | 7 +++++ CMakeLists.txt | 31 +++------------------- LibCmo/CMakeLists.txt | 25 ++++++++++++++++++ 8 files changed, 74 insertions(+), 37 deletions(-) rename BMap/{ => BMap}/BMExports.cpp (100%) rename BMap/{ => BMap}/BMExports.hpp (100%) rename BMap/{ => BMap}/BMap.cpp (100%) rename BMap/{ => BMap}/BMap.hpp (100%) create mode 100644 CMake/BMapConfig.cmake.in diff --git a/BMap/BMExports.cpp b/BMap/BMap/BMExports.cpp similarity index 100% rename from BMap/BMExports.cpp rename to BMap/BMap/BMExports.cpp diff --git a/BMap/BMExports.hpp b/BMap/BMap/BMExports.hpp similarity index 100% rename from BMap/BMExports.hpp rename to BMap/BMap/BMExports.hpp diff --git a/BMap/BMap.cpp b/BMap/BMap/BMap.cpp similarity index 100% rename from BMap/BMap.cpp rename to BMap/BMap/BMap.cpp diff --git a/BMap/BMap.hpp b/BMap/BMap/BMap.hpp similarity index 100% rename from BMap/BMap.hpp rename to BMap/BMap/BMap.hpp diff --git a/BMap/CMakeLists.txt b/BMap/CMakeLists.txt index c64452e..920b3a5 100644 --- a/BMap/CMakeLists.txt +++ b/BMap/CMakeLists.txt @@ -3,21 +3,22 @@ add_library(BMap SHARED "") # Setup sources target_sources(BMap PRIVATE - BMap.cpp - BMExports.cpp + BMap/BMap.cpp + BMap/BMExports.cpp ) # Setup headers target_sources(BMap -PRIVATE +PUBLIC FILE_SET HEADERS FILES - BMap.hpp - BMExports.hpp + BMap/BMap.hpp + BMap/BMExports.hpp ) # Setup header infomation target_include_directories(BMap -PRIVATE - "${CMAKE_CURRENT_LIST_DIR}" +PUBLIC + "$" + "$" ) # Setup linked library infomation target_link_libraries(BMap @@ -31,7 +32,36 @@ PRIVATE BMAP_EXPORTING ) -# Install BMap +# Install binary and headers install(TARGETS BMap - RUNTIME DESTINATION ${NEMO_INSTALL_BIN_PATH} + EXPORT BMapTargets + LIBRARY DESTINATION ${NEMO_INSTALL_LIB_PATH} + ARCHIVE DESTINATION ${NEMO_INSTALL_LIB_PATH} + INCLUDES DESTINATION ${NEMO_INSTALL_INCLUDE_PATH} + FILE_SET HEADERS DESTINATION ${NEMO_INSTALL_INCLUDE_PATH} +) +# Install target +install(EXPORT BMapTargets + FILE BMapTargets.cmake + NAMESPACE NeMo:: + DESTINATION ${NEMO_INSTALL_LIB_PATH}/cmake/BMap +) +# Package configuration file +write_basic_package_version_file( + BMapConfigVersion.cmake + VERSION ${PACKAGE_VERSION} + COMPATIBILITY SameMinorVersion +) +configure_package_config_file( + ${CMAKE_CURRENT_LIST_DIR}/../CMake/BMapConfig.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/BMapConfig.cmake" + INSTALL_DESTINATION ${NEMO_INSTALL_LIB_PATH}/cmake/BMap +) +# Copy package files to install destination +install( +FILES + "${CMAKE_CURRENT_BINARY_DIR}/BMapConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/BMapConfigVersion.cmake" +DESTINATION + ${NEMO_INSTALL_LIB_PATH}/cmake/BMap ) diff --git a/CMake/BMapConfig.cmake.in b/CMake/BMapConfig.cmake.in new file mode 100644 index 0000000..0e1674a --- /dev/null +++ b/CMake/BMapConfig.cmake.in @@ -0,0 +1,7 @@ + +@PACKAGE_INIT@ + +# Include targets file +include("${CMAKE_CURRENT_LIST_DIR}/BMapTargets.cmake") + +check_required_components(BMap) \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index c20ef0e..f770c95 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,6 +36,9 @@ find_package(ZLIB REQUIRED) find_package(YYCCommonplace REQUIRED) find_package(STB REQUIRED) +# Import package helper +include(CMakePackageConfigHelpers) + # If we are not in Windows environment, and we need to build shared library BMap, # we should enable PIC (position independent code), otherwise build process will fail. # Also we should let all symbols in final dll be hidden (not exported) in default. @@ -57,31 +60,3 @@ endif () if (NEMO_BUILD_DOC) add_subdirectory(Documents) endif () - -# Install target and package -# Install target -install(EXPORT LibCmoTargets - FILE LibCmoTargets.cmake - NAMESPACE NeMo:: - DESTINATION ${NEMO_INSTALL_LIB_PATH}/cmake/LibCmo -) -# Package configuration file -include(CMakePackageConfigHelpers) -write_basic_package_version_file( - LibCmoConfigVersion.cmake - VERSION ${PACKAGE_VERSION} - COMPATIBILITY SameMinorVersion -) -configure_package_config_file( - ${CMAKE_CURRENT_LIST_DIR}/CMake/LibCmoConfig.cmake.in - "${CMAKE_CURRENT_BINARY_DIR}/LibCmoConfig.cmake" - INSTALL_DESTINATION ${NEMO_INSTALL_LIB_PATH}/cmake/LibCmo -) -# Copy package files to install destination -install( -FILES - "${CMAKE_CURRENT_BINARY_DIR}/LibCmoConfig.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/LibCmoConfigVersion.cmake" -DESTINATION - ${NEMO_INSTALL_LIB_PATH}/cmake/LibCmo -) diff --git a/LibCmo/CMakeLists.txt b/LibCmo/CMakeLists.txt index 3a94937..9639dc1 100644 --- a/LibCmo/CMakeLists.txt +++ b/LibCmo/CMakeLists.txt @@ -126,3 +126,28 @@ install(TARGETS LibCmo INCLUDES DESTINATION ${NEMO_INSTALL_INCLUDE_PATH} FILE_SET HEADERS DESTINATION ${NEMO_INSTALL_INCLUDE_PATH} ) +# Install target +install(EXPORT LibCmoTargets + FILE LibCmoTargets.cmake + NAMESPACE NeMo:: + DESTINATION ${NEMO_INSTALL_LIB_PATH}/cmake/LibCmo +) +# Package configuration file +write_basic_package_version_file( + LibCmoConfigVersion.cmake + VERSION ${PACKAGE_VERSION} + COMPATIBILITY SameMinorVersion +) +configure_package_config_file( + ${CMAKE_CURRENT_LIST_DIR}/../CMake/LibCmoConfig.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/LibCmoConfig.cmake" + INSTALL_DESTINATION ${NEMO_INSTALL_LIB_PATH}/cmake/LibCmo +) +# Copy package files to install destination +install( +FILES + "${CMAKE_CURRENT_BINARY_DIR}/LibCmoConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/LibCmoConfigVersion.cmake" +DESTINATION + ${NEMO_INSTALL_LIB_PATH}/cmake/LibCmo +)