cmake_minimum_required (VERSION 2.6) project (CGenerator) cmake_policy(SET CMP0063 NEW) set(CMAKE_C_VISIBILITY_PRESET default) set(CMAKE_CXX_VISIBILITY_PRESET default) set(CMAKE_VISIBILITY_INLINES_HIDDEN OFF) set(CMAKE_BUILD_TYPE Debug) set(pkgName "openapi_petstore") find_package(CURL 7.58.0 REQUIRED) if(CURL_FOUND) include_directories(${CURL_INCLUDE_DIR}) set(PLATFORM_LIBRARIES ${PLATFORM_LIBRARIES} ${CURL_LIBRARIES} ) else(CURL_FOUND) message(FATAL_ERROR "Could not find the CURL library and development files.") endif() set(SRCS src/list.c src/apiKey.c src/apiClient.c external/cJSON.c model/api_response.c model/category.c model/order.c model/pet.c model/tag.c model/user.c api/PetAPI.c api/StoreAPI.c api/UserAPI.c ) set(HDRS include/apiClient.h include/list.h include/keyValuePair.h external/cJSON.h model/api_response.h model/category.h model/order.h model/pet.h model/tag.h model/user.h api/PetAPI.h api/StoreAPI.h api/UserAPI.h ) add_library(${pkgName} SHARED ${SRCS} ${HDRS}) target_link_libraries(${pkgName} ${CURL_LIBRARIES} ) install(TARGETS ${pkgName} DESTINATION ${CMAKE_INSTALL_PREFIX}) set(SRCS "") set(HDRS "") # This section shows how to use the above compiled libary to compile the source files # set source files set(SRCS unit-tests/manual-PetAPI.c unit-tests/manual-StoreAPI.c unit-tests/manual-UserAPI.c unit-tests/manual-order.c unit-tests/manual-user.c) #set header files set(HDRS ) # loop over all files in SRCS variable foreach(SOURCE_FILE ${SRCS}) # Get only the file name from the file as add_executable doesnot support executable with slash("/") get_filename_component(FILE_NAME_ONLY ${SOURCE_FILE} NAME_WE) # Remove .c from the file name and set it as executable name string( REPLACE ".c" "" EXECUTABLE_FILE ${FILE_NAME_ONLY}) # Add executable for every source file in SRCS add_executable(unit-${EXECUTABLE_FILE} ${SOURCE_FILE}) # Link above created libary to executable and dependent libary curl target_link_libraries(unit-${EXECUTABLE_FILE} ${CURL_LIBRARIES} ${pkgName} ) endforeach(SOURCE_FILE ${SRCS})