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:
@@ -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
|
||||||
)
|
)
|
||||||
|
|||||||
7
CMake/BMapConfig.cmake.in
Normal file
7
CMake/BMapConfig.cmake.in
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
@PACKAGE_INIT@
|
||||||
|
|
||||||
|
# Include targets file
|
||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/BMapTargets.cmake")
|
||||||
|
|
||||||
|
check_required_components(BMap)
|
||||||
@@ -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
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user