cmake_minimum_required(VERSION 2.8) find_package(CJSON REQUIRED) # to have CJSON_PREFIX and CJSON_INSTALL_DIR include(ExternalProject) set(CJSON_RELEASE 1.4.0) set(CJSON_COMMIT 030d0c14cc5e411758aaa4680e11ba82ebf61bc0) set(CJSON_GIT https://github.com/DaveGamble/cJSON.git) #set(CJSON_INSTALL_DIR ${CMAKE_BINARY_DIR}/downloads/install) set(CJSON_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${CJSON_INSTALL_DIR}) set(CJSON_CMAKE_ARGS ${CJSON_CMAKE_ARGS} -DBUILD_SHARED_LIBS=OFF -DENABLE_CJSON_TEST=OFF) set(CJSON_PATCH_COMMAND "") set(CJSON_CMAKE_CACHE_ARGS "") # Pass toolchain if(NOT "${CMAKE_TOOLCHAIN_FILE}" STREQUAL "") set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE}) set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE}) endif() # Need to set the build type set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}) # Pass any non default configuration if(CMAKE_CONFIGURATION_TYPES) foreach(CONFIG_NAME ${CMAKE_CONFIGURATION_TYPES}) if(NOT "${CONFIG_NAME}" STREQUAL "Debug" AND NOT "${CONFIG_NAME}" STREQUAL "Release" AND NOT "${CONFIG_NAME}" STREQUAL "MinSizeRel" AND NOT "${CONFIG_NAME}" STREQUAL "RelWithDebInfo") string(TOUPPER ${CONFIG_NAME} CONFIG_NAME) #Set the flags for this configuration foreach(FLAGS_NAME CXX_FLAGS C_FLAGS) #Compiler flags set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_${FLAGS_NAME}_${CONFIG_NAME}:STRING=${CMAKE_${FLAGS_NAME}_${CONFIG_NAME}}) endforeach() foreach(FLAGS_NAME EXE_LINKER_FLAGS MODULE_LINKER_FLAGS SHARED_LINKER_FLAGS) #Linker flags set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_${FLAGS_NAME}_${CONFIG_NAME}:STRING=${CMAKE_${FLAGS_NAME}_${CONFIG_NAME}}) endforeach() endif() endforeach() set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_CONFIGURATION_TYPES:STRING=${CMAKE_CONFIGURATION_TYPES}) endif() ExternalProject_Add( ${CJSON_NAME} GIT_REPOSITORY ${CJSON_GIT} GIT_TAG ${CJSON_COMMIT} DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/libraries/cjson/download SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/libraries/cjson/source BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/libraries/cjson INSTALL_DIR ${CJSON_INSTALL_DIR} CMAKE_ARGS ${CJSON_CMAKE_ARGS} CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} )