diff --git a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/cmake-lists.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/cmake-lists.mustache index b80efd48484..7bede039c58 100644 --- a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/cmake-lists.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/cmake-lists.mustache @@ -12,13 +12,11 @@ cmake_minimum_required (VERSION 2.8) #PROJECT's NAME project(CppRestOpenAPIClient) - +set(CMAKE_VERBOSE_MAKEFILE ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) # THE LOCATION OF OUTPUT BINARIES set(CMAKE_LIBRARY_DIR ${PROJECT_SOURCE_DIR}/lib) -set(LIBRARY_OUTPUT_PATH ${CMAKE_LIBRARY_DIR}) - -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) @@ -27,24 +25,27 @@ endif() # BUILD TYPE message("A ${CMAKE_BUILD_TYPE} build configuration is detected") -# Update require components as necessary -#find_package(Boost 1.45.0 REQUIRED COMPONENTS ${Boost_THREAD_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${Boost_REGEX_LIBRARY} ${Boost_DATE_TIME_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_FILESYSTEM_LIBRARY}) +if (UNIX) + message(STATUS "Building client library for Linux/Unix") -# build and set path to cpp rest sdk -set(CPPREST_ROOT ${PROJECT_SOURCE_DIR}/3rdParty/cpprest) -set(CPPREST_INCLUDE_DIR ${CPPREST_ROOT}/include) -set(CPPREST_LIBRARY_DIR ${CPPREST_ROOT}/lib) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wall -Wno-unused-variable") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wno-unused-variable") -include_directories(${PROJECT_SOURCE_DIR} api model ${CPPREST_INCLUDE_DIR}) + find_package(cpprestsdk REQUIRED) + find_package(Boost REQUIRED) +else() + message(STATUS "Building client library for Windows") + find_package(cpprestsdk REQUIRED) + find_package(Boost REQUIRED) + find_package(pthreads REQUIRED) +endif() -# If using vcpkg, set include directories. Also comment out CPPREST section above since vcpkg will handle it. -# To install required vcpkg packages execute: -# > vcpkg install cpprestsdk cpprestsdk:x64-windows boost-uuid boost-uuid:x64-windows -# set(VCPKG_ROOT "C:\\vcpkg\\installed\\x64-windows") -# set(VCPKG_INCLUDE_DIR ${VCPKG_ROOT}/include) -# set(VCPKG_LIBRARY_DIR ${VCPKG_ROOT}/lib) -# include_directories(${PROJECT_SOURCE_DIR} api model ${VCPKG_INCLUDE_DIR}) +# Manually set the cpprestsdk paths when not using package manager +#set(CPPREST_INCLUDE_DIR ${CPPREST_ROOT}/include) +#set(CPPREST_LIBRARY_DIR ${CPPREST_ROOT}/lib) +#include_directories(${CPPREST_INCLUDE_DIR}) +#link_directories(${CPPREST_LIBRARY_DIR}) #SUPPORTING FILES set(SUPPORTING_FILES "ApiClient" "ApiConfiguration" "ApiException" "HttpContent" "IHttpBody" "JsonBody" "ModelBase" "MultipartFormData" "Object") @@ -52,3 +53,24 @@ set(SUPPORTING_FILES "ApiClient" "ApiConfiguration" "ApiException" "HttpContent file(GLOB SOURCE_FILES "api/*" "model/*") add_library(${PROJECT_NAME} ${SUPPORTING_FILES} ${SOURCE_FILES}) + +target_include_directories( + ${PROJECT_NAME} PRIVATE + ${Boost_INCLUDE_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/model + ${CMAKE_CURRENT_SOURCE_DIR}/api +) + +target_link_directories( + ${PROJECT_NAME} PRIVATE + ${Boost_LIBRARY_DIRS} +) + +if (UNIX) + target_link_libraries(${PROJECT_NAME} PRIVATE cpprest pthread ${Boost_LIBRARIES} crypto) +else() + target_link_libraries(${PROJECT_NAME} PRIVATE cpprestsdk::cpprest ${pthreads_LIBRARIES} ${Boost_LIBRARIES} bcrypt) +endif() + +set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) +set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) diff --git a/samples/client/petstore/cpp-restsdk/CMakeLists.txt b/samples/client/petstore/cpp-restsdk/CMakeLists.txt index 6aec7474b59..27ceccc45fd 100644 --- a/samples/client/petstore/cpp-restsdk/CMakeLists.txt +++ b/samples/client/petstore/cpp-restsdk/CMakeLists.txt @@ -4,34 +4,54 @@ project(cpprest-petstore) set(CMAKE_VERBOSE_MAKEFILE ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) +if (UNIX) + message(STATUS "Building for Linux/Unix") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wall -Wno-unused-variable") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -std=c++14 -Wall -Wno-unused-variable") + set(CMAKE_BUILD_TYPE Debug) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wall -Wno-unused-variable -pg -g3") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wno-unused-variable -pg -g3") + + find_package(cpprestsdk REQUIRED) + find_package(Boost REQUIRED) +else() + message(STATUS "Building for Windows") + + find_package(cpprestsdk REQUIRED) + find_package(Boost REQUIRED) + find_package(pthreads REQUIRED) +endif() -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pg -g3") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg -g3") -set(CMAKE_BUILD_TYPE Debug) -set(CMAKE_PREFIX_PATH /usr/lib/x86_64-linux-gnu/cmake) -find_package(cpprestsdk REQUIRED) -find_package(Boost REQUIRED) add_subdirectory(client) file(GLOB SRCS ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ) -include_directories( + +add_executable(${PROJECT_NAME} ${SRCS}) +add_dependencies(${PROJECT_NAME} CppRestOpenAPIClient ) + +target_include_directories( + ${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/client ${CMAKE_CURRENT_SOURCE_DIR}/client/model ${CMAKE_CURRENT_SOURCE_DIR}/client/api + ${Boost_INCLUDE_DIRS} ) -link_directories( +target_link_directories( + ${PROJECT_NAME} PRIVATE ${Boost_LIBRARY_DIRS} ) -add_executable(${PROJECT_NAME} ${SRCS}) -add_dependencies(${PROJECT_NAME} CppRestOpenAPIClient ) -target_link_libraries(${PROJECT_NAME} CppRestOpenAPIClient cpprest pthread boost_system crypto) + +if (UNIX) + target_link_libraries(${PROJECT_NAME} PRIVATE CppRestOpenAPIClient cpprest pthread ${Boost_LIBRARIES} crypto) +else() + target_link_libraries(${PROJECT_NAME} PRIVATE CppRestOpenAPIClient cpprestsdk::cpprest ${pthreads_LIBRARIES} ${Boost_LIBRARIES} bcrypt) +endif() + set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) -install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) +if (UNIX) + install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) +endif() diff --git a/samples/client/petstore/cpp-restsdk/client/CMakeLists.txt b/samples/client/petstore/cpp-restsdk/client/CMakeLists.txt index 86565fec65e..ad1d5754ad1 100644 --- a/samples/client/petstore/cpp-restsdk/client/CMakeLists.txt +++ b/samples/client/petstore/cpp-restsdk/client/CMakeLists.txt @@ -12,13 +12,11 @@ cmake_minimum_required (VERSION 2.8) #PROJECT's NAME project(CppRestOpenAPIClient) - +set(CMAKE_VERBOSE_MAKEFILE ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) # THE LOCATION OF OUTPUT BINARIES set(CMAKE_LIBRARY_DIR ${PROJECT_SOURCE_DIR}/lib) -set(LIBRARY_OUTPUT_PATH ${CMAKE_LIBRARY_DIR}) - -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) @@ -27,24 +25,27 @@ endif() # BUILD TYPE message("A ${CMAKE_BUILD_TYPE} build configuration is detected") -# Update require components as necessary -#find_package(Boost 1.45.0 REQUIRED COMPONENTS ${Boost_THREAD_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${Boost_REGEX_LIBRARY} ${Boost_DATE_TIME_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_FILESYSTEM_LIBRARY}) +if (UNIX) + message(STATUS "Building client library for Linux/Unix") -# build and set path to cpp rest sdk -set(CPPREST_ROOT ${PROJECT_SOURCE_DIR}/3rdParty/cpprest) -set(CPPREST_INCLUDE_DIR ${CPPREST_ROOT}/include) -set(CPPREST_LIBRARY_DIR ${CPPREST_ROOT}/lib) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wall -Wno-unused-variable") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wno-unused-variable") -include_directories(${PROJECT_SOURCE_DIR} api model ${CPPREST_INCLUDE_DIR}) + find_package(cpprestsdk REQUIRED) + find_package(Boost REQUIRED) +else() + message(STATUS "Building client library for Windows") + find_package(cpprestsdk REQUIRED) + find_package(Boost REQUIRED) + find_package(pthreads REQUIRED) +endif() -# If using vcpkg, set include directories. Also comment out CPPREST section above since vcpkg will handle it. -# To install required vcpkg packages execute: -# > vcpkg install cpprestsdk cpprestsdk:x64-windows boost-uuid boost-uuid:x64-windows -# set(VCPKG_ROOT "C:\\vcpkg\\installed\\x64-windows") -# set(VCPKG_INCLUDE_DIR ${VCPKG_ROOT}/include) -# set(VCPKG_LIBRARY_DIR ${VCPKG_ROOT}/lib) -# include_directories(${PROJECT_SOURCE_DIR} api model ${VCPKG_INCLUDE_DIR}) +# Manually set the cpprestsdk paths when not using package manager +#set(CPPREST_INCLUDE_DIR ${CPPREST_ROOT}/include) +#set(CPPREST_LIBRARY_DIR ${CPPREST_ROOT}/lib) +#include_directories(${CPPREST_INCLUDE_DIR}) +#link_directories(${CPPREST_LIBRARY_DIR}) #SUPPORTING FILES set(SUPPORTING_FILES "ApiClient" "ApiConfiguration" "ApiException" "HttpContent" "IHttpBody" "JsonBody" "ModelBase" "MultipartFormData" "Object") @@ -52,3 +53,24 @@ set(SUPPORTING_FILES "ApiClient" "ApiConfiguration" "ApiException" "HttpContent file(GLOB SOURCE_FILES "api/*" "model/*") add_library(${PROJECT_NAME} ${SUPPORTING_FILES} ${SOURCE_FILES}) + +target_include_directories( + ${PROJECT_NAME} PRIVATE + ${Boost_INCLUDE_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/model + ${CMAKE_CURRENT_SOURCE_DIR}/api +) + +target_link_directories( + ${PROJECT_NAME} PRIVATE + ${Boost_LIBRARY_DIRS} +) + +if (UNIX) + target_link_libraries(${PROJECT_NAME} PRIVATE cpprest pthread ${Boost_LIBRARIES} crypto) +else() + target_link_libraries(${PROJECT_NAME} PRIVATE cpprestsdk::cpprest ${pthreads_LIBRARIES} ${Boost_LIBRARIES} bcrypt) +endif() + +set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) +set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)