From cca4664e840c019c1656a02219ae6e0ee3b63e33 Mon Sep 17 00:00:00 2001 From: mutouyun Date: Sat, 10 Jul 2021 13:50:46 +0800 Subject: [PATCH] option(LIBIPC_BUILD_SHARED_LIBS 'Build shared libraries (DLLs).' OFF) --- CMakeLists.txt | 12 ++++++------ include/libipc/export.h | 6 ++++-- src/CMakeLists.txt | 18 ++++++++++++++---- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 57f62e7..56a6fac 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ option(LIBIPC_BUILD_DEMOS "Build all of libipc's own demos." OFF) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG") if(NOT MSVC) - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2") endif() include_directories(${CMAKE_SOURCE_DIR}/include) @@ -19,14 +19,14 @@ set(LIBIPC_PROJECT_DIR ${PROJECT_SOURCE_DIR}) add_subdirectory(src) if (LIBIPC_BUILD_TESTS) - set(GOOGLETEST_VERSION 1.10.0) - add_subdirectory(3rdparty/gtest) - add_subdirectory(test) + set(GOOGLETEST_VERSION 1.10.0) + add_subdirectory(3rdparty/gtest) + add_subdirectory(test) endif() if (LIBIPC_BUILD_DEMOS) - add_subdirectory(demo/chat) - add_subdirectory(demo/msg_que) + add_subdirectory(demo/chat) + add_subdirectory(demo/msg_que) endif() install( diff --git a/include/libipc/export.h b/include/libipc/export.h index c555574..6024f2f 100755 --- a/include/libipc/export.h +++ b/include/libipc/export.h @@ -44,9 +44,11 @@ */ #ifndef IPC_EXPORT -#if defined(__IPC_LIBRARY__) +#if defined(LIBIPC_LIBRARY_SHARED_BUILDING__) # define IPC_EXPORT IPC_DECL_EXPORT -#else +#elif defined(LIBIPC_LIBRARY_SHARED_USING__) # define IPC_EXPORT IPC_DECL_IMPORT +#else +# define IPC_EXPORT #endif #endif /*IPC_EXPORT*/ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 08faf05..143f9de 100755 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,6 +1,6 @@ project(ipc) -add_compile_options(-D__IPC_LIBRARY__) +option(LIBIPC_BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF) if(NOT MSVC) add_compile_options(-fPIC) @@ -26,11 +26,21 @@ file(GLOB HEAD_FILES ${LIBIPC_PROJECT_DIR}/src/libipc/platform/*.h ${LIBIPC_PROJECT_DIR}/src/libipc/utility/*.h) -add_library(${PROJECT_NAME} SHARED ${SRC_FILES} ${HEAD_FILES}) +if (LIBIPC_BUILD_SHARED_LIBS) + add_library(${PROJECT_NAME} SHARED ${SRC_FILES} ${HEAD_FILES}) + target_compile_definitions(${PROJECT_NAME} + INTERFACE + LIBIPC_LIBRARY_SHARED_USING__ + PRIVATE + LIBIPC_LIBRARY_SHARED_BUILDING__) +else() + add_library(${PROJECT_NAME} STATIC ${SRC_FILES} ${HEAD_FILES}) +endif() + if(NOT MSVC) target_link_libraries(${PROJECT_NAME} PUBLIC - pthread - $<$>:rt>) + pthread + $<$>:rt>) endif() install(