diff --git a/cpp/CHANGELOG.md b/cpp/CHANGELOG.md index 19bea4b97e..94a9479ed4 100644 --- a/cpp/CHANGELOG.md +++ b/cpp/CHANGELOG.md @@ -51,6 +51,7 @@ Please mark all change in change log and use the ticket from JIRA. - MS-34 - Fix prometheus-cpp thirdparty - MS-67 - Fix license check bug - MS-76 - Fix pipeline crash bug +- MS-100 - cmake: fix AWS build issue ## Improvement diff --git a/cpp/cmake/ThirdPartyPackages.cmake b/cpp/cmake/ThirdPartyPackages.cmake index 429d6c9d44..daffe72ec0 100644 --- a/cpp/cmake/ThirdPartyPackages.cmake +++ b/cpp/cmake/ThirdPartyPackages.cmake @@ -1762,7 +1762,10 @@ macro(build_aws) -DENABLE_UNITY_BUILD=on -DNO_ENCRYPTION=off) - set(AWS_STATIC_LIB "${AWS_PREFIX}/lib/libs3.a") + set(AWS_CPP_SDK_CORE_STATIC_LIB + "${AWS_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}aws-cpp-sdk-core${CMAKE_STATIC_LIBRARY_SUFFIX}") + set(AWS_CPP_SDK_S3_STATIC_LIB + "${AWS_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}aws-cpp-sdk-s3${CMAKE_STATIC_LIBRARY_SUFFIX}") # Only pass our C flags on Unix as on MSVC it leads to a # "incompatible command-line options" error set(AWS_CMAKE_ARGS @@ -1788,24 +1791,40 @@ macro(build_aws) URL ${AWS_SOURCE_URL} BUILD_BYPRODUCTS - "${AWS_STATIC_LIB}") + "${AWS_CPP_SDK_S3_STATIC_LIB}" + "${AWS_CPP_SDK_CORE_STATIC_LIB}") file(MAKE_DIRECTORY "${AWS_PREFIX}/include") - add_library(aws STATIC IMPORTED) - set_target_properties(aws - PROPERTIES IMPORTED_LOCATION "${AWS_STATIC_LIB}" - INTERFACE_INCLUDE_DIRECTORIES "${AWS_PREFIX}/include") + add_library(aws-cpp-sdk-s3 STATIC IMPORTED) + set_target_properties(aws-cpp-sdk-s3 + PROPERTIES + IMPORTED_LOCATION "${AWS_CPP_SDK_S3_STATIC_LIB}" + INTERFACE_INCLUDE_DIRECTORIES "${AWS_PREFIX}/include" + INTERFACE_LINK_LIBRARIES "${AWS_PREFIX}/lib/libaws-c-event-stream.a;${AWS_PREFIX}/lib/libaws-checksums.a;${AWS_PREFIX}/lib/libaws-c-common.a") + + add_library(aws-cpp-sdk-core STATIC IMPORTED) + set_target_properties(aws-cpp-sdk-core + PROPERTIES IMPORTED_LOCATION "${AWS_CPP_SDK_CORE_STATIC_LIB}" + INTERFACE_INCLUDE_DIRECTORIES "${AWS_PREFIX}/include" + INTERFACE_LINK_LIBRARIES "${AWS_PREFIX}/lib/libaws-c-event-stream.a;${AWS_PREFIX}/lib/libaws-checksums.a;${AWS_PREFIX}/lib/libaws-c-common.a") + + add_dependencies(aws-cpp-sdk-s3 aws_ep) + add_dependencies(aws-cpp-sdk-core aws_ep) - add_dependencies(aws aws_ep) endmacro() if(MILVUS_WITH_AWS) resolve_dependency(AWS) # TODO: Don't use global includes but rather target_include_directories - get_target_property(AWS_INCLUDE_DIR aws INTERFACE_INCLUDE_DIRECTORIES) link_directories(SYSTEM ${AWS_PREFIX}/lib) - include_directories(SYSTEM ${AWS_INCLUDE_DIR}) + + get_target_property(AWS_CPP_SDK_S3_INCLUDE_DIR aws-cpp-sdk-s3 INTERFACE_INCLUDE_DIRECTORIES) + include_directories(SYSTEM ${AWS_CPP_SDK_S3_INCLUDE_DIR}) + + get_target_property(AWS_CPP_SDK_CORE_INCLUDE_DIR aws-cpp-sdk-core INTERFACE_INCLUDE_DIRECTORIES) + include_directories(SYSTEM ${AWS_CPP_SDK_CORE_INCLUDE_DIR}) + endif() diff --git a/cpp/unittest/storage/CMakeLists.txt b/cpp/unittest/storage/CMakeLists.txt index de55596f05..6b4303b70a 100644 --- a/cpp/unittest/storage/CMakeLists.txt +++ b/cpp/unittest/storage/CMakeLists.txt @@ -6,8 +6,8 @@ aux_source_directory(${MILVUS_ENGINE_SRC}/storage/s3 s3_client_src) # Make sure that your call to link_directories takes place before your call to the relevant add_executable. -include_directories(/usr/local/cuda/include) -link_directories("/usr/local/cuda/lib64") +include_directories("${CUDA_TOOLKIT_ROOT_DIR}/include") +link_directories("${CUDA_TOOLKIT_ROOT_DIR}/lib64") set(s3_client_test_src ${unittest_srcs} @@ -23,11 +23,8 @@ add_executable(s3_test set(s3_client_libs stdc++ - libaws-cpp-sdk-s3.a - libaws-cpp-sdk-core.a - libaws-c-event-stream.a - libaws-checksums.a - libaws-c-common.a + aws-cpp-sdk-s3 + aws-cpp-sdk-core boost_filesystem ) target_link_libraries(s3_test