浏览代码

Add overrides for BUILD_SHARED_LIBS

Max Bruckner 7 年之前
父节点
当前提交
2a087843e4
共有 3 个文件被更改,包括 13 次插入3 次删除
  1. 11 2
      CMakeLists.txt
  2. 1 0
      README.md
  3. 1 1
      tests/CMakeLists.txt

+ 11 - 2
CMakeLists.txt

@@ -123,9 +123,18 @@ file(GLOB HEADERS cJSON.h)
 set(SOURCES cJSON.c)
 
 option(BUILD_SHARED_AND_STATIC_LIBS "Build both shared and static libraries" Off)
+option(CJSON_OVERRIDE_BUILD_SHARED_LIBS "Override BUILD_SHARED_LIBS with CJSON_BUILD_SHARED_LIBS" OFF)
+option(CJSON_BUILD_SHARED_LIBS "Overrides BUILD_SHARED_LIBS if CJSON_OVERRIDE_BUILD_SHARED_LIBS is enabled" ON)
+
+if ((CJSON_OVERRIDE_BUILD_SHARED_LIBS AND CJSON_BUILD_SHARED_LIBS) OR ((NOT CJSON_OVERRIDE_BUILD_SHARED_LIBS) AND BUILD_SHARED_LIBS))
+    set(CJSON_LIBRARY_TYPE SHARED)
+else()
+    set(CJSON_LIBRARY_TYPE STATIC)
+endif()
+
 
 if (NOT BUILD_SHARED_AND_STATIC_LIBS)
-    add_library("${CJSON_LIB}" "${HEADERS}" "${SOURCES}")
+    add_library("${CJSON_LIB}" "${CJSON_LIBRARY_TYPE}" "${HEADERS}" "${SOURCES}")
 else()
     # See https://cmake.org/Wiki/CMake_FAQ#How_do_I_make_my_shared_and_static_libraries_have_the_same_root_name.2C_but_different_suffixes.3F
     add_library("${CJSON_LIB}" SHARED "${HEADERS}" "${SOURCES}")
@@ -165,7 +174,7 @@ if(ENABLE_CJSON_UTILS)
     set(SOURCES_UTILS cJSON_Utils.c)
 
     if (NOT BUILD_SHARED_AND_STATIC_LIBS)
-        add_library("${CJSON_UTILS_LIB}" "${HEADERS_UTILS}" "${SOURCES_UTILS}")
+        add_library("${CJSON_UTILS_LIB}" "${CJSON_LIBRARY_TYPE}" "${HEADERS_UTILS}" "${SOURCES_UTILS}")
         target_link_libraries("${CJSON_UTILS_LIB}" "${CJSON_LIB}")
     else()
         add_library("${CJSON_UTILS_LIB}" SHARED "${HEADERS_UTILS}" "${SOURCES_UTILS}")

+ 1 - 0
README.md

@@ -94,6 +94,7 @@ You can change the build process with a list of different options that you can p
 * `-DBUILD_SHARED_AND_STATIC_LIBS=On`: Build both shared and static libraries. (off by default)
 * `-DCMAKE_INSTALL_PREFIX=/usr`: Set a prefix for the installation.
 * `-DENABLE_LOCALES=On`: Enable the usage of localeconv method. ( on by default )
+* `-DCJSON_OVERRIDE_BUILD_SHARED_LIBS=On`: Enable overriding the value of `BUILD_SHARED_LIBS` with `-DCJSON_BUILD_SHARED_LIBS`.
 
 If you are packaging cJSON for a distribution of Linux, you would probably take these steps for example:
 ```

+ 1 - 1
tests/CMakeLists.txt

@@ -1,5 +1,5 @@
 if(ENABLE_CJSON_TEST)
-    add_library(unity unity/src/unity.c)
+    add_library(unity "${CJSON_LIBRARY_TYPE}" unity/src/unity.c)
 
     # Disable -Werror for Unity
     if (FLAG_SUPPORTED_Werror)