c ++ cmake, связывающий libconfig ++ - PullRequest
0 голосов
/ 11 апреля 2019

Я установил пакет libconfig с менеджером Microsoft / vcpkg в Windows. И в Visual Studio пытается связать libconfig ++ с моим проектом, но он не может быть связан.

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_STANDARD 17)

############ 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 projects

# Add main library
add_subdirectory (src)

init_target (test)

if(_version_allowed STREQUAL NEW)
    message (STATUS "==== set project " ${TARGET_NAME})
    project (${TARGET_NAME} VERSION ${TEST_VERSION})
else()
    project (${TARGET_NAME})
endif()


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

find_package(libconfig)

if(WIN32)
    link_directories(G:/_Development/Projects/cpprestsdk/vcpkg/installed/x64-windows/lib)
    include_directories(G:/_Development/Projects/cpprestsdk/vcpkg/installed/x64-windows/include)
endif()

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

test.cpp

#include <libconfig.h++>

using namespace libconfig;

int main(int argc, char* argv[])
{
    // libconfig
    Config cfg;

    return 0;
}

Ошибка:

------ Началось восстановление: Проект: CMakeLists, Конфигурация: RelWithDebInfo ------ Очистка ... 0 файлов. [1/2] C: \ PROGRA ~ 2 \ MIB055 ~ 1 \ 2017 \ PROFES ~ 1 \ VC \ Tools \ MSVC \ 1416 ~ 1,270 \ Bin \ HostX64 \ x64 \ cl.exe / nologo / TP -IG: _Development \ Projects \ cppTest \ src -Ig: _Development \ Проекты \ cpprestsdk \ vcpkg \ установившие \ x64-окна \ включают / DWIN32 / D_WINDOWS / W3 / GR / EHsc / MD / Zi / O2 / Ob1 / DNDEBUG
-std: c ++ 17 / showInclude /Fosrc\CMakeFiles\test.dir\test.cpp.obj / Fdsrc \ CMakeFiles \ test.dir \ / FS -c G: _Development \ Проекты \ cppTest \ SRC \ test.cpp G: _Development \ Проекты \ cpprestsdk \ vcpkg \ установлена ​​\ x64-окна \ включать \ libconfig.h ++ (51): предупреждение C4275: в качестве базы используется не интерфейс класса dll 'std :: exception' для класса dll-интерфейса 'libconfig :: ConfigException' C: \ Program Файлы (x86) \ Microsoft Visual Студия \ 2017 \ Professional \ VC \ Tools \ MSVC \ 14.16.27023 \ включать \ vcruntime_exception.h (44): примечание: см. объявление 'std :: exception'
G: _Development \ Проекты \ cpprestsdk \ vcpkg \ установлена ​​\ x64-окна \ включать \ libconfig.h ++ (51): примечание: см. объявление «libconfig :: ConfigException» [2/2] cmd.exe / C "cd. &&" C: \ Program Files (x86) \ Microsoft Visual Студия \ 2017 \ Professional \ Common7 \ IDE \ CommonExtensions \ Microsoft \ CMake \ CMake \ Bin \ cmake.exe» -E vs_link_exe --intdir = src \ CMakeFiles \ test.dir --manifests - C: \ PROGRA ~ 2 \ MIB055 ~ 1 \ 2017 \ PROFES ~ 1 \ VC \ Tools \ MSVC \ 1416 ~ 1.270 \ bin \ Hostx64 \ x64 \ link.exe / nologo src \ CMakeFiles \ test.dir \ test.cpp.obj /out:src\test.exe /implib:src\test.lib /pdb:src\test.pdb /version:0.0 / машина: x64 / debug / INCREMENTAL / subsystem: console -LIBPATH: G: _Development \ Проекты \ cpprestsdk \ vcpkg \ установившие \ x64-окна \ Lib libconfig.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd. "FAILED: src / test.exe cmd.exe / C" cd. && "C: \ Program Файлы (x86) \ Microsoft Visual Студия \ 2017 \ Professional \ Common7 \ IDE \ CommonExtensions \ Microsoft \ CMake \ CMake \ Bin \ cmake.exe» -E vs_link_exe --intdir = src \ CMakeFiles \ test.dir --manifests - C: \ PROGRA ~ 2 \ MIB055 ~ 1 \ 2017 \ PROFES ~ 1 \ VC \ Tools \ MSVC \ 1416 ~ 1.270 \ bin \ Hostx64 \ x64 \ link.exe / nologo src \ CMakeFiles \ test.dir \ test.cpp.obj /out:src\test.exe /implib:src\test.lib /pdb:src\test.pdb /version:0.0 / машина: x64 / debug / INCREMENTAL / subsystem: console -LIBPATH: G: _Development \ Проекты \ cpprestsdk \ vcpkg \ установившие \ x64-окна \ Lib libconfig.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd. "LINK Pass 1: команда «C: \ PROGRA ~ 2 \ MIB055 ~ 1 \ 2017 \ PROFES ~ 1 \ VC \ Tools \ MSVC \ 1416 ~ 1,270 \ Bin \ Hostx64 \ x64 \ link.exe / nologo src \ CMakeFiles \ test.dir \ test.cpp.obj /out:src\test.exe /implib:src\test.lib /pdb:src\test.pdb /version:0.0 / машина: x64 / debug / INCREMENTAL / subsystem: console -LIBPATH: G: _Development \ Проекты \ cpprestsdk \ vcpkg \ установившие \ x64-окна \ Lib libconfig.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib / MANIFEST /MANIFESTFILE:src\CMakeFiles\test.dir/intermediate.manifest src \ CMakeFiles \ test.dir / manifest.res "не удалось (код выхода 1120) с следующий вывод: C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ test.cpp.obj: ошибка LNK2019: неразрешенный внешний символ "__declspec (dllimport) public: __cdecl libconfig :: Config :: Config (void) "(__imp _ ?? 0Config @ libconfig @@ QEAA @ XZ) ссылка в функции main C: \ Program Files (x86) \ Microsoft VisualStudio \ 2017 \ Professional \ Common7 \ IDE \ test.cpp.obj: ошибка LNK2019: неразрешенный внешний символ "__declspec (dllimport) public: virtual __cdecl libconfig :: Config :: ~ Config (void) "(__imp _ ?? 1Config @ libconfig @@ UEAA @ XZ), на который есть ссылка в функции main C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ src \ test.exe: фатальная ошибка LNK1120: 2 неразрешенных внешних ниндзя: сборка остановлена: подкоманда не удалось.

Сборка не удалась.

Что не так?

...