【问题标题】:Can't use a library installed with VCPKG in CLion无法在 CLion 中使用随 VCPKG 安装的库
【发布时间】:2020-06-26 06:37:00
【问题描述】:

我按照 VCPKG github site 中描述的教程,然后安装了 OpenMesh 8.0,之后,我链接了工具链

-DCMAKE_TOOLCHAIN_FILE=/home/diolante/vcpkg/scripts/buildsystems/vcpkg.cmake 

在 Clion 工具链设置中以及当我重新加载我在 Clion 项目中更改的 CMakeLists.txt 时:

# CMakeLists.txt
cmake_minimum_required(VERSION 3.14)
project(lul)

find_package(openmesh REQUIRED)

add_executable(main main.cpp)
target_link_libraries(main openmesh)

Clion 输出返回以下错误:

CMake Error at /home/diolante/vcpkg/scripts/buildsystems/vcpkg.cmake:288 (_find_package):   By not providing "Findopenmesh.cmake" in CMAKE_MODULE_PATH this project has   asked CMake to find a package configuration file provided by "openmesh",   but CMake did not find one.

  Could not find a package configuration file provided by "openmesh" with any
  of the following names:

    openmeshConfig.cmake
    openmesh-config.cmake

  Add the installation prefix of "openmesh" to CMAKE_PREFIX_PATH or set
  "openmesh_DIR" to a directory containing one of the above files. If
  "openmesh" provides a separate development package or SDK, be sure it has
  been installed.

【问题讨论】:

    标签: cmake clion vcpkg openmesh


    【解决方案1】:

    以下内容基于 Visual Studio 编译器,但应该很容易适应不同的环境。

    首先你需要安装你要使用的三元组,例如

    vcpkg install openmesh --triplet x64-windows --triplet x86-windows
    

    (如果您不确定是构建项目 x64 还是 x86,只需安装两个三元组。)

    在“构建、执行、部署”下的“工具链”条目中选择正确的工具链。要使工具链成为默认设置,请使用向上和向下的小箭头将其移动到列表中的第一个条目。

    在“构建、执行、部署”下的“CMake”条目中选择工具链

    如果您选择了尚未安装 OpenMesh 三元组的工具链/架构,您将看到您遇到的确切错误。

    vcpkgOpenMesh 8.1 提供了两个变量,需要用于指定包含目录和要链接的库,如下所示:

    target_include_directories(main PRIVATE ${OPENMESH_INCLUDE_DIRS})
    target_link_libraries(main PRIVATE ${OPENMESH_LIBRARIES})
    

    这个项目的整个 CMakeLists.txt 现在看起来像这样:

    cmake_minimum_required(VERSION 3.14)
    project(lul)
    
    find_package(openmesh REQUIRED)
    
    add_executable(main main.cpp)
    target_include_directories(main PRIVATE ${OPENMESH_INCLUDE_DIRS})
    target_link_libraries(main PRIVATE ${OPENMESH_LIBRARIES})
    # the following line is only needed for Visual Studio compilers
    target_compile_definitions(main PRIVATE -D_USE_MATH_DEFINES)
    

    样例工程可从here下载

    【讨论】:

    • 您能帮忙将一个工作示例 Clion 项目上传到 github 吗?任何 vcpkg 库都可以。
    • 不幸的是,我没有安装 CLion,所以对此我无能为力。但原因是在 CMakeLists.txt 中,而不是在我认为的 CLion 项目中。
    • @Justalearner 刚刚安装了 CLion 并检查了步骤。该问题似乎很可能与缺少 OpenMesh vcpkg 三元组有关。明天上传项目。
    • 感谢您的演示项目! @vre
    • +1 用于修复,并且给 CLion 用户的说明:默认情况下 CLion 使用 Visual Studio 作为工具链,但“架构”下拉菜单为空。如果为空,则默认为 x86 架构,因此如果您正在处理 x64 项目,请务必明确选择 x64!
    猜你喜欢
    • 2017-09-03
    • 2023-01-12
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    相关资源
    最近更新 更多