【问题标题】:vcpkg and cmake and vsc on Ubuntu can not find packageUbuntu上的vcpkg和cmake和vsc找不到包
【发布时间】:2021-07-29 21:47:33
【问题描述】:

我在 Ubuntu 20.04 上安装了 vcpkg 并安装了 boost 和 opencv。

我有这个 cmakelist 文件:

set(CMAKE_TOOLCHAIN_FILE /home/m/local/vcpkg/scripts/buildsystems/vcpkg.cmake CACHE STRING "")
set(VCPKG_TARGET_TRIPLET "x64-linux" CACHE STRING "")
cmake_minimum_required(VERSION 3.0.0)
project(test1 VERSION 0.1.0)
    
find_package(Opencv CONFIG REQUIRED)
find_package(boost CONFIG REQUIRED )
    
add_executable(test1 main.cpp)
target_link_libraries(test1 PRIVATE opencv::opencv boost::boost)

但是当我在 Visual Studio 代码中运行它时,它找不到 openCV 和 boost。

问题是什么,我该如何解决?

【问题讨论】:

  • 在设置工具链文件的时候必须删除整个构建目录。
  • 一旦你创建了包含 CMake 缓存的构建目录,它就不能更改工具链文件。
  • @GuillaumeRacicot 我删除了构建目录并关闭了 VCS 并重新启动了 vsc。还是同样的错误。还有其他想法吗?
  • 尝试在命令行参数中设置工具链文件。
  • 我正在使用 Visual Studio 代码和 cmake 工具扩展,如何在此设置中执行此操作?

标签: c++ visual-studio-code cmake vcpkg


【解决方案1】:

如 cmets 中所述,CMake 中的案例很重要:

find_package(OpenCV CONFIG REQUIRED)

find_package(Boost REQUIRED)

vcpkg 不会为 Boost 安装配置文件,因此您不能在此处使用 CONFIG。您可能还想使用 COMPONENTS 选项调用它以列出您实际需要的模块。

vcpkg 的用法:

The package boost is compatible with built-in CMake targets:

    find_package(Boost REQUIRED [COMPONENTS <libs>...])
    target_link_libraries(main PRIVATE ${Boost_LIBRARIES})
    target_include_directories(main PRIVATE ${Boost_INCLUDE_DIRS})

【讨论】:

    最近更新 更多