如何在 CMakeLists.txt 上包含 Vcpkg?

How to include Vcpkg on CMakeLists.txt?

所以我有一个依赖opencv的项目,它是用vcpkg安装的。该项目是用 cmake 构建的。

CMakeLists.txt

cmake_minimum_required(VERSION 3.19.1)

set(CMAKE_TOOLCHAIN_FILE ~/vcpkg/scripts/buildsystems/vcpkg.cmake)

project(mylib)

set (CMAKE_CXX_STANDARD 14)

find_package(OpenCV REQUIRED)

include_directories(~/vcpkg/installed/x64-osx/include)

link_libraries(${OpenCV_LIBS})

set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)

add_library(mylib SHARED mylib another_lib)

可以看出,我正在尝试使用相同的 CMakeLists.txt 在 macOS 和 Windows 上构建它。

link_libraries(${OpenCV_LIBS}) 可以在不同的操作系统之间很好地转换。

但是 include_directories(~/vcpkg/installed/x64-osx/include) 只适用于 macOS,在 Windows 上它应该指的是 C:/vcpkg/installed/x64-windows/include

有没有opecv/vcpkg我可以使用这些的inlace?

这个 include_directories(~/vcpkg/installed/x64-osx/include) 看起来很奇怪。这应该是:

include_directories(${OpenCV_INCLUDE_DIRS})

您可以在清单模式下使用 vcpkg https://vcpkg.readthedocs.io/en/latest/users/manifests/

通过这种方式,您可以创建一个 JSON 文件,列出所有依赖项,并且在调用 cmake 时,vcpkg 将自动 bootstrap 并安装所有依赖项。