首页 > 解决方案 > c++ cmake链接libconfig++

问题描述

我确实在 Windows 上使用 Microsoft/vcpkg 管理器安装了软件包 libconfig。在 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)

测试.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\Projects\cpprestsdk\vcpkg\installed\x64-windows\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /Zi /O2 /Ob1 /DNDEBUG
-std:c++17 /showIncludes /Fosrc\CMakeFiles\test.dir\test.cpp.obj /Fdsrc\CMakeFiles\test.dir\ /FS -c G:_Development\Projects\cppTest\src\test.cpp G :_Development\Projects\cpprestsdk\vcpkg\installed\x64-windows\include\libconfig.h++(51):警告 C4275:非 dll 接口类“std::exception”用作 dll 接口类“libconfig::”的基础ConfigException' C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\include\vcruntime_exception.h(44):注意:参见 'std::exception' 的声明
lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd 。”失败:src/test.exe cmd.exe /C “cd 。&& "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E vs_link_exe --intdir=src\CMakeFiles\test.目录 --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 /machine:x64 /debug /INCREMENTAL /subsystem:console -LIBPATH: G:_Development\Projects\cpprestsdk\vcpkg\installed\x64-windows\lib libconfig.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && 光盘。

构建失败。

怎么了?

标签: c++visual-studiocmakelibconfig

解决方案


推荐阅读