1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
cmake_minimum_required(VERSION 3.15)
target_include_directories(cpr PUBLIC
$<INSTALL_INTERFACE:include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/cpr_generated_includes/>)
target_sources(cpr PRIVATE
# Header files (useful in IDEs)
cpr/accept_encoding.h
cpr/api.h
cpr/async.h
cpr/async_wrapper.h
cpr/auth.h
cpr/bearer.h
cpr/body.h
cpr/body_view.h
cpr/buffer.h
cpr/cert_info.h
cpr/cookies.h
cpr/cpr.h
cpr/cprtypes.h
cpr/curlholder.h
cpr/curlholder.h
cpr/error.h
cpr/file.h
cpr/limit_rate.h
cpr/local_port.h
cpr/local_port_range.h
cpr/multipart.h
cpr/parameters.h
cpr/payload.h
cpr/proxies.h
cpr/proxyauth.h
cpr/response.h
cpr/secure_string.h
cpr/session.h
cpr/singleton.h
cpr/ssl_ctx.h
cpr/ssl_options.h
cpr/threadpool.h
cpr/timeout.h
cpr/unix_socket.h
cpr/util.h
cpr/verbose.h
cpr/interface.h
cpr/redirect.h
cpr/http_version.h
cpr/interceptor.h
cpr/filesystem.h
cpr/curlmultiholder.h
cpr/multiperform.h
cpr/resolve.h
${PROJECT_BINARY_DIR}/cpr_generated_includes/cpr/cprver.h
)
# Filesystem
if(CPR_USE_BOOST_FILESYSTEM)
find_package(Boost 1.77 REQUIRED COMPONENTS filesystem)
if(Boost_FOUND)
target_link_libraries(cpr PUBLIC Boost::filesystem)
endif()
else()
try_compile(
STD_FS_SUPPORTED
"${CMAKE_CURRENT_BINARY_DIR}/std_fs"
SOURCES "${PROJECT_SOURCE_DIR}/cmake/std_fs_support_test.cpp"
CXX_STANDARD ${CMAKE_CXX_STANDARD}
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
)
if(NOT STD_FS_SUPPORTED)
try_compile(
STDCXXFS_SUPPORTED
"${CMAKE_CURRENT_BINARY_DIR}/stdcxxfs"
SOURCES "${PROJECT_SOURCE_DIR}/cmake/std_fs_support_test.cpp"
LINK_LIBRARIES "stdc++fs"
CXX_STANDARD ${CMAKE_CXX_STANDARD}
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
)
if(STDCXXFS_SUPPORTED)
target_link_libraries(cpr PUBLIC stdc++fs)
else()
try_compile(
CXXFS_SUPPORTED
"${CMAKE_CURRENT_BINARY_DIR}/cxxfs"
SOURCES "${PROJECT_SOURCE_DIR}/cmake/std_fs_support_test.cpp"
LINK_LIBRARIES "c++fs"
CXX_STANDARD ${CMAKE_CXX_STANDARD}
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
)
if(CXXFS_SUPPORTED)
target_link_libraries(cpr PUBLIC c++fs)
else()
message(FATAL_ERROR "Your compiler does not support the `<filesystem>` include or cpr is unable to determine the proper compiler flags for it.")
endif()
endif()
endif()
endif()
install(DIRECTORY cpr DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(DIRECTORY ${PROJECT_BINARY_DIR}/cpr_generated_includes/cpr DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|