2

I am trying to run simple c++ application on Ubuntu 18.04 with using libconfig 1.7.2 library which was installed with vcpkg version 2018.11.23-unknownhash (Microsoft C++ Library Manager for Windows), cmake version is 3.14.3. Static library was linked well and include path specified but errors still exists. Can somebody helps me to find the problem?

Project directory:

--test2
----cmake
------CMakeHelpers.cmake
----include
------libconfig.h++
----release
----src
------CMakeLists.txt
------test.cpp
----CMakeLists.txt

CMakeLists.txt

cmake_minimum_required(VERSION 3.12)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_VERBOSE_MAKEFILE ON)

############ Project name and version
set (TEST_MAJOR_VERSION 1)
set (TEST_MINOR_VERSION 0)
set (TEST_PATCH_VERSION 0)
set (TEST_VERSION ${TEST_MAJOR_VERSION}.${TEST_MINOR_VERSION}.${TEST_PATCH_VERSION})

# Include our cmake macros
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
include (CMakeHelpers)

add_subdirectory (src)

./src/CMakeLists.txt

init_target (test)
message (STATUS "set project " ${TARGET_NAME})
project (${TARGET_NAME} VERSION ${TEST_VERSION})

file (GLOB SOURCE_FILES
        *.cpp
        )
file (GLOB HEADER_FILES
        *.h
        )

find_library(LIBCONFIG_LOCATION libconfig++)

include_directories(/home/pavels/dev/cpp/test2/include)
include_directories(/home/pavels/dev/cpp/vcpkg/packages/libconfig_x64-linux/include)
include_directories(/home/pavels/dev/cpp/vcpkg/installed/x64-linux/include)

message (STATUS "Found LibConfig: " ${LIBCONFIG_LOCATION})

add_executable(${TARGET_NAME} ${SOURCE_FILES} ${HEADER_FILES})
target_link_libraries(test PRIVATE ${LIBCONFIG_LOCATION})

./src/test.cpp

#include <iostream>
#include <libconfig.h++>

using namespace libconfig;

int main(int argc, char* argv[])
{
        std::cout << "Hello guys" << std::endl;
        Config cfg;

        // Read the file. If there is an error, report it and exit.
        try
        {
                cfg.readFile("example.cfg");
        }
        catch(const FileIOException &fioex)
        {
                std::cerr << "I/O error while reading file." << std::endl;
                return(EXIT_FAILURE);
        }
        catch(const ParseException &pex)
        {
                std::cerr << "Parse error at " << pex.getFile() << ":" << pex.getLine() << " - " << pex.getError() << std::endl;
                return(EXIT_FAILURE);
        }
        return 0;
}

Compiling source:

>mkdir release;cd release
>../../cmake .. -DCMAKE_TOOLCHAIN_FILE=/home/pavels/dev/cpp/vcpkg/scripts/buildsystems/vcpkg.cmake
-- The C compiler identification is GNU 7.3.0
-- The CXX compiler identification is GNU 7.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- set project test
-- Found LibConfig: /home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pavels/dev/cpp/test2/release

>../../cmake --build .
/home/pavels/cmake/cmake-3.14.3-Linux-x86_64/bin/cmake -S/home/pavels/dev/cpp/test2 -B/home/pavels/dev/cpp/test2/release --check-build-system CMakeFiles/Makefile.cmake 0
/home/pavels/cmake/cmake-3.14.3-Linux-x86_64/bin/cmake -E cmake_progress_start /home/pavels/dev/cpp/test2/release/CMakeFiles /home/pavels/dev/cpp/test2/release/CMakeFiles/prog                                ress.marks
/usr/bin/make -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/home/pavels/dev/cpp/test2/release'
/usr/bin/make -f src/CMakeFiles/test.dir/build.make src/CMakeFiles/test.dir/depend
make[2]: Entering directory '/home/pavels/dev/cpp/test2/release'
cd /home/pavels/dev/cpp/test2/release && /home/pavels/cmake/cmake-3.14.3-Linux-x86_64/bin/cmake -E cmake_depends "Unix Makefiles" /home/pavels/dev/cpp/test2 /home/pavels/dev/c                                pp/test2/src /home/pavels/dev/cpp/test2/release /home/pavels/dev/cpp/test2/release/src /home/pavels/dev/cpp/test2/release/src/CMakeFiles/test.dir/DependInfo.cmake --color=
Scanning dependencies of target test
make[2]: Leaving directory '/home/pavels/dev/cpp/test2/release'
/usr/bin/make -f src/CMakeFiles/test.dir/build.make src/CMakeFiles/test.dir/build
make[2]: Entering directory '/home/pavels/dev/cpp/test2/release'
[ 50%] Building CXX object src/CMakeFiles/test.dir/test.cpp.o
cd /home/pavels/dev/cpp/test2/release/src && /usr/bin/c++   -I/home/pavels/dev/cpp/test2/src -I/home/pavels/dev/cpp/test2/include -I/home/pavels/dev/cpp/vcpkg/packages/libconf                                ig_x64-linux/include -I/home/pavels/dev/cpp/vcpkg/installed/x64-linux/include  -std=gnu++1z -o CMakeFiles/test.dir/test.cpp.o -c /home/pavels/dev/cpp/test2/src/test.cpp
[100%] Linking CXX executable test
cd /home/pavels/dev/cpp/test2/release/src && /home/pavels/cmake/cmake-3.14.3-Linux-x86_64/bin/cmake -E cmake_link_script CMakeFiles/test.dir/link.txt --verbose=1
/usr/bin/c++    -rdynamic CMakeFiles/test.dir/test.cpp.o  -o test /home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::Config()':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:320: undefined reference to `config_init'
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:321: undefined reference to `config_set_hook'
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:322: undefined reference to `config_set_destructor'
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:323: undefined reference to `config_set_include_func'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::~Config()':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:330: undefined reference to `config_destroy'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::clear()':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:338: undefined reference to `config_clear'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::setOptions(int)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:345: undefined reference to `config_set_options'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::getOptions() const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:352: undefined reference to `config_get_options'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::setOption(libconfig::Config::Option, bool)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:359: undefined reference to `config_set_option'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::getOption(libconfig::Config::Option) const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:366: undefined reference to `config_get_option'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::setTabWidth(unsigned short)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:385: undefined reference to `config_set_tab_width'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::getTabWidth() const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:392: undefined reference to `config_get_tab_width'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::setFloatPrecision(unsigned short)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:399: undefined reference to `config_set_float_precision'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::getFloatPrecision() const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:406: undefined reference to `config_get_float_precision'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::setIncludeDir(char const*)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:413: undefined reference to `config_set_include_dir'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::evaluateIncludePath(char const*, char const**)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:427: undefined reference to `config_default_include_func'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::read(_IO_FILE*)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:455: undefined reference to `config_read'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::readString(char const*)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:463: undefined reference to `config_read_string'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::write(_IO_FILE*) const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:471: undefined reference to `config_write'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::readFile(char const*)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:478: undefined reference to `config_read_file'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::writeFile(char const*)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:486: undefined reference to `config_write_file'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::lookup(char const*) const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:494: undefined reference to `config_lookup'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Config::exists(char const*) const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:505: undefined reference to `config_lookup'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::Setting(config_setting_t*)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:639: undefined reference to `config_setting_get_format'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::setFormat(libconfig::Setting::Format)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:673: undefined reference to `config_setting_set_format'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator bool() const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:682: undefined reference to `config_setting_get_bool'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator int() const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:691: undefined reference to `config_setting_get_int'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator unsigned int() const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:700: undefined reference to `config_setting_get_int'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator long long() const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:731: undefined reference to `config_setting_get_int64'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator unsigned long long() const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:740: undefined reference to `config_setting_get_int64'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator double() const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:751: undefined reference to `config_setting_get_float'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator float() const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:761: undefined reference to `config_setting_get_float'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator char const*() const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:770: undefined reference to `config_setting_get_string'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator std::__cxx11::basic_string<char, std::c                                har_traits<char>, std::allocator<char> >() const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:779: undefined reference to `config_setting_get_string'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator=(bool)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:794: undefined reference to `config_setting_set_bool'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator=(int)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:805: undefined reference to `config_setting_set_int'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator=(long long const&)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:826: undefined reference to `config_setting_set_int64'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator=(double const&)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:837: undefined reference to `config_setting_set_float'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator=(float)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:850: undefined reference to `config_setting_set_float'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator=(char const*)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:861: undefined reference to `config_setting_set_string'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator=(std::__cxx11::basic_string<char, std::                                char_traits<char>, std::allocator<char> > const&)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:872: undefined reference to `config_setting_set_string'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::lookup(char const*) const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:883: undefined reference to `config_setting_lookup'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator[](char const*) const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:897: undefined reference to `config_setting_get_member'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::operator[](int) const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:912: undefined reference to `config_setting_get_elem'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::exists(char const*) const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:1004: undefined reference to `config_setting_get_member'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::getLength() const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:1013: undefined reference to `config_setting_length'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::getIndex() const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:1083: undefined reference to `config_setting_index'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::remove(char const*)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:1092: undefined reference to `config_setting_remove'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::remove(unsigned int)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:1103: undefined reference to `config_setting_remove_elem'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::add(char const*, libconfig::Setting::Type)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:1118: undefined reference to `config_setting_add'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::add(libconfig::Setting::Type)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:1152: undefined reference to `config_setting_add'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::assertType(libconfig::Setting::Type) const':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:1192: undefined reference to `config_get_option'
/home/pavels/dev/cpp/vcpkg/installed/x64-linux/debug/lib/liblibconfig++.a(libconfigcpp.cc.o): In function `libconfig::Setting::wrapSetting(config_setting_t*)':
/home/pavels/dev/cpp/vcpkg/buildtrees/libconfig/src/v1.7.2-ddbd1a1da6/lib/libconfigcpp.c++:1208: undefined reference to `config_setting_set_hook'
collect2: error: ld returned 1 exit status
src/CMakeFiles/test.dir/build.make:87: recipe for target 'src/test' failed
make[2]: *** [src/test] Error 1
make[2]: Leaving directory '/home/pavels/dev/cpp/test2/release'
CMakeFiles/Makefile2:93: recipe for target 'src/CMakeFiles/test.dir/all' failed
make[1]: *** [src/CMakeFiles/test.dir/all] Error 2
make[1]: Leaving directory '/home/pavels/dev/cpp/test2/release'
Makefile:86: recipe for target 'all' failed
make: *** [all] Error 2
Pasha
  • 89
  • 9
  • Does `nm` show if the undefined references exist within the archive you are linking against? It looks like you are missing a library that `libconfig` requires. – fdk1342 May 06 '19 at 15:00
  • what libraries libconfig needed? – Pasha May 06 '19 at 15:10
  • When installed via `apt-get` on Ubuntu 14.04 `pkg-config --libs libconfig++` doesn't show any extra libraries. But it's been installed with a different method and you need to trace down if your archive is complete or not. – fdk1342 May 06 '19 at 15:18
  • 1
    `config_init` and other undefined functions are defined in `libconfig` library. So you need to link your application not only with `libconfig++`, but with `libconfig` too. The latter is unneeded in case of **shared** `libconfig++` library, but you have a **static** one. "Static library was linked well" - No, when a static library is built, it is not *linked*. – Tsyvarev May 06 '19 at 22:03
  • you are right. I did add libconfig too and application compiled well. Thank you. – Pasha May 08 '19 at 13:29

1 Answers1

0

This issue was fixed with additional linking libconfig library where undefined functions were defined.

./src/CMakeLists.txt

init_target (test)
message (STATUS "set project " ${TARGET_NAME})
project (${TARGET_NAME} VERSION ${TEST_VERSION})

file (GLOB SOURCE_FILES
        *.cpp
        )
file (GLOB HEADER_FILES
        *.h
        )

find_library(LIBCONFIGPP_LOCATION libconfig++)
find_library(LIBCONFIG_LOCATION libconfig)

include_directories(/home/pavels/dev/cpp/test2/include)
include_directories(/home/pavels/dev/cpp/vcpkg/packages/libconfig_x64-linux/include)
include_directories(/home/pavels/dev/cpp/vcpkg/installed/x64-linux/include)

message (STATUS "Found LibConfig++: " ${LIBCONFIGPP_LOCATION})
message (STATUS "Found LibConfig: " ${LIBCONFIG_LOCATION})

add_executable(${TARGET_NAME} ${SOURCE_FILES} ${HEADER_FILES})
target_link_libraries(test PRIVATE ${LIBCONFIGPP_LOCATION} ${LIBCONFIG_LOCATION})
Pasha
  • 89
  • 9