]> granicus.if.org Git - json-c/commitdiff
support to build both static and shared libraries
authordota17 <chenguopingdota@163.com>
Wed, 6 May 2020 02:48:53 +0000 (10:48 +0800)
committerdota17 <chenguopingdota@163.com>
Wed, 6 May 2020 06:46:47 +0000 (14:46 +0800)
CMakeLists.txt
README.md

index 0d51dc4bae1c1d0dcaf74af618d0d75e9b751e8e..dc84b5226beefd99ace6e777dd2ef65937774a0a 100644 (file)
@@ -400,6 +400,26 @@ target_include_directories(${PROJECT_NAME}
         $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
 )
 
+# Allow to build static and shared libraries at the same time
+if (BUILD_STATIC_LIBS)
+    set(ORIGINAL_STATIC_LIB_NAME ${PROJECT_NAME}-static)
+    add_library(${ORIGINAL_STATIC_LIB_NAME} STATIC
+        ${JSON_C_SOURCES}
+        ${JSON_C_HEADERS}
+    )
+
+    # rename the static library
+    set_target_properties(${ORIGINAL_STATIC_LIB_NAME} PROPERTIES
+        OUTPUT_NAME ${PROJECT_NAME}
+    )
+
+    target_include_directories(${PROJECT_NAME}
+        PUBLIC
+            $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
+            $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
+    )
+endif ()
+
 # Always create new install dirs with 0755 permissions, regardless of umask
 set(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
        OWNER_READ
index 39ea0d6814d44360bbfe55d9c27c76d23be783ff..909fd116bf95877b8be789c79927077ec2f9e4b2 100644 (file)
--- a/README.md
+++ b/README.md
@@ -98,6 +98,7 @@ Variable             | Type   | Description
 CMAKE_INSTALL_PREFIX | String | The install location.
 CMAKE_BUILD_TYPE     | String | Defaults to "debug"
 BUILD_SHARED_LIBS    | Bool   | The default build generates a dynamic (dll/so) library.  Set this to OFF to create a static library instead.
+BUILD_STATIC_LIBS    | Bool   | This build generates a static (lib/a) library.
 ENABLE_RDRAND        | Bool   | Enable RDRAND Hardware RNG Hash Seed
 ENABLE_THREADING     | Bool   | Enable partial threading support
 DISABLE_WERROR       | Bool   | Disable use of -Werror
@@ -106,7 +107,14 @@ DISABLE_BSYMBOLIC    | Bool   | Disable use of -Bsymbolic-functions
 Pass these options as `-D` on CMake's command-line.
 
 ```sh
-cmake -DBUILD_SHARED_LIBS=OFF ...
+# build a static library
+cmake -DBUILD_SHARED_LIBS=OFF ..
+```
+
+Allow to build both static and shared libraries.
+
+```sh
+cmake -DBUILD_STATIC_LIBS=ON ..
 ```
 
 ### Building with partial threading support