c++cmakeubuntu-18.04vcpkglibconfig

cmake compiling problem for c++ application with libconfig library


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

Solution

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