minio / minio-cpp

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

Compiling script reports errors in workspace #94

Closed zongyuyilang123 closed 1 year ago

zongyuyilang123 commented 1 year ago

when I execute g++ ./examples/UploadObject.cc -I include -I build/vcpkg_installed/x64-linux/include -std=c++17

result is below like the picture Selection_028

So how should I compile it?

balamurugana commented 1 year ago

You could need to use CMakeLists.txt like below

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})
zongyuyilang123 commented 1 year ago

You could need to use CMakeLists.txt like below

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})

thanks!But when I exec cmake .., Report the following error:

-- Found required libs: stdc++fs;MINIOCPP_LIBRARIES-NOTFOUND
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
MINIOCPP_INCLUDE_DIRS
   used as include directory in directory /home/oem/workSpace/yuHongKingLong/minio_3/demo
   used as include directory in directory /home/oem/workSpace/yuHongKingLong/minio_3/demo
   used as include directory in directory /home/oem/workSpace/yuHongKingLong/minio_3/demo
MINIOCPP_LIBRARIES
    linked by target "demo" in directory /home/oem/workSpace/yuHongKingLong/minio_3/demo

-- Configuring incomplete, errors occurred!
See also "/home/oem/workSpace/yuHongKingLong/minio_3/demo/build/CMakeFiles/CMakeOutput.log".