You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

CMakeLists.txt 3.7 kB

9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #Licensed under the MIT license. See LICENSE file in the project root for full license information.
  2. cmake_minimum_required(VERSION 2.8.7)
  3. project(json-c)
  4. if(MSVC)
  5. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4100 /wd4996 /wd4244 /wd4706 /wd4702 /wd4127 /wd4701")
  6. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4100 /wd4996 /wd4244 /wd4706 /wd4702 /wd4127 /wd4701")
  7. file(COPY ./config.h.win32 DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/)
  8. file(RENAME ${CMAKE_CURRENT_BINARY_DIR}/include/config.h.win32 ${CMAKE_CURRENT_BINARY_DIR}/include/config.h)
  9. file(COPY ./json_config.h.win32 DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/)
  10. file(RENAME ${CMAKE_CURRENT_BINARY_DIR}/include/json_config.h.win32 ${CMAKE_CURRENT_BINARY_DIR}/include/json_config.h)
  11. elseif(MINGW)
  12. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -D_GNU_SOURCE=1")
  13. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -D_GNU_SOURCE=1")
  14. if (MSYS OR CMAKE_GENERATOR STREQUAL "Unix Makefiles")
  15. execute_process(COMMAND echo ${CMAKE_CURRENT_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
  16. execute_process(COMMAND sh autogen.sh WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
  17. execute_process(COMMAND sh ./configure WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
  18. file(COPY ./config.h DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/)
  19. file(COPY ./json_config.h DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/)
  20. else()
  21. file(COPY ./config.h.win32 DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/)
  22. file(RENAME ${CMAKE_CURRENT_BINARY_DIR}/include/config.h.win32 ${CMAKE_CURRENT_BINARY_DIR}/include/config.h)
  23. file(COPY ./json_config.h.win32 DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/)
  24. file(RENAME ${CMAKE_CURRENT_BINARY_DIR}/include/json_config.h.win32 ${CMAKE_CURRENT_BINARY_DIR}/include/json_config.h)
  25. endif()
  26. elseif(UNIX)
  27. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
  28. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -D_GNU_SOURCE")
  29. execute_process(COMMAND echo ${CMAKE_CURRENT_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
  30. execute_process(COMMAND sh autogen.sh WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
  31. execute_process(COMMAND ./configure WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
  32. file(COPY ./config.h DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/)
  33. file(COPY ./json_config.h DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/)
  34. endif()
  35. include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)
  36. set(JSON_C_HEADERS
  37. ./json.h
  38. ${CMAKE_CURRENT_BINARY_DIR}/include/config.h
  39. ./json_config.h
  40. ./arraylist.h
  41. ./debug.h
  42. ./json_inttypes.h
  43. ./json_object.h
  44. ./json_object_private.h
  45. ./json_pointer.h
  46. ./json_tokener.h
  47. ./json_util.h
  48. ./linkhash.h
  49. ./math_compat.h
  50. ./strdup_compat.h
  51. ./vasprintf_compat.h
  52. ./printbuf.h
  53. ./random_seed.h
  54. )
  55. set(JSON_C_SOURCES
  56. ./arraylist.c
  57. ./debug.c
  58. ./json_object.c
  59. ./json_pointer.c
  60. ./json_tokener.c
  61. ./json_util.c
  62. ./linkhash.c
  63. ./printbuf.c
  64. ./random_seed.c
  65. )
  66. add_library(json-c
  67. SHARED
  68. ${JSON_C_SOURCES}
  69. ${JSON_C_HEADERS}
  70. )
  71. add_library(json-c-static
  72. STATIC
  73. ${JSON_C_SOURCES}
  74. ${JSON_C_HEADERS}
  75. )
  76. set_property(TARGET json-c PROPERTY C_STANDARD 99)
  77. set_property(TARGET json-c-static PROPERTY C_STANDARD 99)
  78. set_target_properties(json-c-static PROPERTIES OUTPUT_NAME json-c)
  79. install(TARGETS json-c json-c-static
  80. RUNTIME DESTINATION bin
  81. LIBRARY DESTINATION lib
  82. ARCHIVE DESTINATION lib
  83. )
  84. install(DIRECTORY . DESTINATION ${CMAKE_INSTALL_PREFIX}/include/json-c FILES_MATCHING PATTERN "*.h")
  85. install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/json-c FILES_MATCHING PATTERN "*.h")