minio / minio-cpp

MinIO C++ Client SDK for Amazon S3 Compatible Cloud Storage
https://minio-cpp.min.io/
Apache License 2.0
127 stars 53 forks source link

Use lib with cmakelist.txt #100

Closed EmaR97 closed 9 months ago

EmaR97 commented 9 months ago

Hi, can sombody show me how to add this lib to cmakelist.txt I tried both specified installtion, but i cant get it to work i always get a different error.

EmaR97 commented 9 months ago

this is the cmakelist im trying:

cmake_minimum_required(VERSION 3.22)
project(CamController)

set(CMAKE_CXX_STANDARD 17)

include_directories("/home/emanuele/.vcpkg-clion/vcpkg/packages/minio-cpp_x64-linux/include")
include_directories("/home/emanuele/.vcpkg-clion/vcpkg/packages/nlohmann-json_x64-linux/include")
include_directories("/home/emanuele/.vcpkg-clion/vcpkg/packages/curlpp_x64-linux/include")
include_directories("/home/emanuele/.vcpkg-clion/vcpkg/packages/pugixml_x64-linux/include")
include_directories("/home/emanuele/.vcpkg-clion/vcpkg/packages/inih_x64-linux/include")
#    include_directories("")
link_directories("/home/emanuele/.vcpkg-clion/vcpkg/packages/minio-cpp_x64-linux/lib")
add_executable(ProcessingServer
        ../src/processing_server.cpp
        ../../src/processing_server.h
)   
target_link_libraries(ProcessingServer PRIVATE miniocpp ${S3_LIBS} )

im getting this error

/usr/bin/ld: /home/emanuele/.vcpkg-clion/vcpkg/packages/minio-cpp_x64-linux/lib/libminiocpp.a(utils.cc.o): undefined reference to symbol 'BIO_f_base64@@OPENSSL_3.0.0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcrypto.so.3: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status ninja: build stopped: subcommand failed.

balamurugana commented 9 months ago

Below CMake with vcpkg works fine

cmake_minimum_required(VERSION 3.10)
project(hello)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)

if("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
  message(FATAL_ERROR "FATAL: In-source builds are not allowed. You should create a separate directory for build files.")
endif()

set(requiredlibs)

if(CMAKE_COMPILER_IS_GNUCC)
  set(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -Werror")
  if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.0 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0 AND NOT MINGW)
    list(APPEND requiredlibs stdc++fs)
  endif()
endif()

find_path(MINIOCPP_INCLUDE_DIRS miniocpp/client.h)
find_library(MINIOCPP_LIBRARIES miniocpp)
include_directories(${MINIOCPP_INCLUDE_DIRS})
list(APPEND requiredlibs ${MINIOCPP_LIBRARIES})

message(STATUS "Found required libs: ${requiredlibs}")

add_executable(hello main.cpp)
target_link_libraries(hello ${requiredlibs})