1
0

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
This commit is contained in:
2026-01-24 17:30:54 +08:00
parent f9ab66dfc2
commit 9228f343ff
8 changed files with 74 additions and 37 deletions

View File

@@ -3,21 +3,22 @@ add_library(BMap SHARED "")
# Setup sources # Setup sources
target_sources(BMap target_sources(BMap
PRIVATE PRIVATE
BMap.cpp BMap/BMap.cpp
BMExports.cpp BMap/BMExports.cpp
) )
# Setup headers # Setup headers
target_sources(BMap target_sources(BMap
PRIVATE PUBLIC
FILE_SET HEADERS FILE_SET HEADERS
FILES FILES
BMap.hpp BMap/BMap.hpp
BMExports.hpp BMap/BMExports.hpp
) )
# Setup header infomation # Setup header infomation
target_include_directories(BMap target_include_directories(BMap
PRIVATE PUBLIC
"${CMAKE_CURRENT_LIST_DIR}" "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
) )
# Setup linked library infomation # Setup linked library infomation
target_link_libraries(BMap target_link_libraries(BMap
@@ -31,7 +32,36 @@ PRIVATE
BMAP_EXPORTING BMAP_EXPORTING
) )
# Install BMap # Install binary and headers
install(TARGETS BMap 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
) )

View File

@@ -0,0 +1,7 @@
@PACKAGE_INIT@
# Include targets file
include("${CMAKE_CURRENT_LIST_DIR}/BMapTargets.cmake")
check_required_components(BMap)

View File

@@ -36,6 +36,9 @@ find_package(ZLIB REQUIRED)
find_package(YYCCommonplace REQUIRED) find_package(YYCCommonplace REQUIRED)
find_package(STB 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, # 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. # 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. # Also we should let all symbols in final dll be hidden (not exported) in default.
@@ -57,31 +60,3 @@ endif ()
if (NEMO_BUILD_DOC) if (NEMO_BUILD_DOC)
add_subdirectory(Documents) add_subdirectory(Documents)
endif () 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
)

View File

@@ -126,3 +126,28 @@ install(TARGETS LibCmo
INCLUDES DESTINATION ${NEMO_INSTALL_INCLUDE_PATH} INCLUDES DESTINATION ${NEMO_INSTALL_INCLUDE_PATH}
FILE_SET HEADERS 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
)