Build a static mmesh lib as well

This commit is contained in:
Clifford Yapp
2025-08-14 11:21:26 -04:00
parent 39a7a5c047
commit f8d65f2a41
2 changed files with 52 additions and 19 deletions
+9 -3
View File
@@ -40,9 +40,7 @@ cmake_minimum_required(VERSION 3.18)
# Set CMake project name
project(mmesh VERSION 1.0.0 LANGUAGES C)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/include
)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
if (NOT DEFINED BIN_DIR)
set (BIN_DIR bin)
@@ -56,6 +54,14 @@ if (NOT DEFINED INCLUDE_DIR)
set (INCLUDE_DIR include)
endif (NOT DEFINED INCLUDE_DIR)
if (NOT DEFINED BUILD_SHARED_LIBS)
set(BUILD_SHARED_LIBS ON)
endif (NOT DEFINED BUILD_SHARED_LIBS)
if (NOT DEFINED BUILD_STATIC_LIBS)
set(BUILD_STATIC_LIBS ON)
endif (NOT DEFINED BUILD_STATIC_LIBS)
find_package(Threads REQUIRED)
include(CheckLibraryExists)
+43 -16
View File
@@ -9,22 +9,49 @@ set(MMESH_SOURCES
mmthread.c
)
add_library(mmesh SHARED ${MMESH_SOURCES})
target_include_directories(
mmesh PUBLIC
$<INSTALL_INTERFACE:${INCLUDE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>
)
target_link_libraries(mmesh PRIVATE ${MM_LIBS})
set_property(TARGET mmesh APPEND PROPERTY COMPILE_DEFINITIONS "MMESH_DLL_EXPORTS")
set_property(TARGET mmesh APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS "MMESH_DLL_IMPORTS")
install(TARGETS mmesh
EXPORT mmeshTargets
RUNTIME DESTINATION ${BIN_DIR}
LIBRARY DESTINATION ${LIB_DIR}
ARCHIVE DESTINATION ${LIB_DIR}
INCLUDES DESTINATION ${INCLUDE_DIR}
)
if (BUILD_SHARED_LIBS)
add_library(mmesh SHARED ${MMESH_SOURCES})
target_include_directories(
mmesh PUBLIC
$<INSTALL_INTERFACE:${INCLUDE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>
)
target_link_libraries(mmesh PRIVATE ${MM_LIBS})
set_property(TARGET mmesh APPEND PROPERTY COMPILE_DEFINITIONS "MMESH_DLL_EXPORTS")
set_property(TARGET mmesh APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS "MMESH_DLL_IMPORTS")
install(TARGETS mmesh
EXPORT mmeshTargets
RUNTIME DESTINATION ${BIN_DIR}
LIBRARY DESTINATION ${LIB_DIR}
ARCHIVE DESTINATION ${LIB_DIR}
INCLUDES DESTINATION ${INCLUDE_DIR}
)
endif (BUILD_SHARED_LIBS)
if (BUILD_STATIC_LIBS)
add_library(mmesh-static STATIC ${MMESH_SOURCES})
if(MSVC)
# msvc does not append 'lib' - do it here to have consistent name
set_target_properties(mmesh-static PROPERTIES PREFIX "lib")
else(MSVC)
set_target_properties(mmesh-static PROPERTIES OUTPUT_NAME "mmesh")
endif(MSVC)
target_include_directories(
mmesh-static PUBLIC
$<INSTALL_INTERFACE:${INCLUDE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>
)
target_link_libraries(mmesh-static PRIVATE ${MM_LIBS})
set_property(TARGET mmesh-static APPEND PROPERTY COMPILE_DEFINITIONS "MMESH_DLL_EXPORTS")
set_property(TARGET mmesh-static APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS "MMESH_DLL_IMPORTS")
install(TARGETS mmesh-static
EXPORT mmeshTargets
RUNTIME DESTINATION ${BIN_DIR}
LIBRARY DESTINATION ${LIB_DIR}
ARCHIVE DESTINATION ${LIB_DIR}
INCLUDES DESTINATION ${INCLUDE_DIR}
)
endif (BUILD_STATIC_LIBS)
# Export the targets to a file
install(EXPORT mmeshTargets