Thanks for your reply, Kori, it's extremely helpful.
I checked my naive CMakeLists.txt file according to your advice but still cannot pass the link process.
The CMakeLists.txt file:
'''
cmake_minimum_required(VERSION 3.10)
project(xxx VERSION 1.0.0 LANGUAGES C CXX)
find_package(IRODS 4.2.11 EXACT REQUIRED)
set(CMAKE_CXX_STANDARD 17)
add_compile_options(-fpermissive)
set(IRODS_EXTERNALS_FULLPATH_BOOST /opt/irods-externals/boost1.67.0-0)
set(IRODS_EXTERNALS_FULLPATH_FMT /opt/irods-externals/fmt6.1.2-1)
add_executable(xxx main.cpp src/scanner.cpp src/irodsClientApiTest.cpp include/irodsClientApiTest.h)
include_directories(include /opt/rh/devtoolset-8/root/usr/include) #for <string_view>
target_include_directories(xxx PRIVATE ${IRODS_INCLUDE_DIRS} ${IRODS_EXTERNALS_FULLPATH_BOOST}/include ${IRODS_EXTERNALS_FULLPATH_FMT}/include)
target_link_libraries(xxx PRIVATE
irods_common irods_client
${IRODS_EXTERNALS_FULLPATH_BOOST}/lib/libboost_filesystem.so
${IRODS_EXTERNALS_FULLPATH_BOOST}/lib/libboost_program_options.so
${IRODS_EXTERNALS_FULLPATH_BOOST}/lib/libboost_system.so
${IRODS_EXTERNALS_FULLPATH_FMT}/lib/libfmt.so)
'''
everything is from ` yum install ` and irods-dev is installed, I cannot figure out the linking error.
The error report is:
'''
undefined reference to `irods::connection_pool::connection_pool(int, std::string const&, int, std::string const&, std::string const&, int)'
CMakeFiles/xxx.dir/src/irodsClientApiTest.cpp.o: In function `irods::query<RcComm>::query(RcComm*, std::string const&, std::vector<std::string, std::allocator<std::string> > const*, std::string const&, unsigned long, unsigned long, irods::query<RcComm>::query_type, int)':
/usr/include/irods/irods_query.hpp:452: undefined reference to `irods::exception::exception(long, std::string const&, std::string const&, unsigned int, std::string const&)'
CMakeFiles/xxx.dir/src/irodsClientApiTest.cpp.o: In function `irods::query<RcComm>::iterator::advance_query()':
/usr/include/irods/irods_query.hpp:401: undefined reference to `irods::exception::exception(long, std::string const&, std::string const&, unsigned int, std::string const&)'
CMakeFiles/xxx.dir/src/irodsClientApiTest.cpp.o: In function `irods::query<RcComm>::gen_query_impl::gen_query_impl(RcComm*, int, int, std::string const&, std::string const&, int)':
/usr/include/irods/irods_query.hpp:171: undefined reference to `irods::exception::exception(long, std::string const&, std::string const&, unsigned int, std::string const&)'
CMakeFiles/xxx.dir/src/irodsClientApiTest.cpp.o: In function `std::string fmt::v6::internal::grouping<char>(fmt::v6::internal::locale_ref)':
/opt/irods-externals/fmt6.1.2-1/include/fmt/format.h:815: undefined reference to `std::string fmt::v6::internal::grouping_impl<char>(fmt::v6::internal::locale_ref)'
CMakeFiles/xxx.dir/src/irodsClientApiTest.cpp.o: In function `irods::query<RcComm>::spec_query_impl::~spec_query_impl()':
/usr/include/irods/irods_query.hpp:264: undefined reference to `irods::error::error(bool, long long, std::string, std::string, int, std::string)'
CMakeFiles/xxx.dir/src/irodsClientApiTest.cpp.o: In function `irods::query<RcComm>::gen_query_impl::~gen_query_impl()':
/usr/include/irods/irods_query.hpp:188: undefined reference to `irods::error::error(bool, long long, std::string, std::string, int, std::string)'
collect2: error: ld returned 1 exit status
'''
where is the missing part?
Thanks a lot.