我试图在C++中使用外部库(特别是opencv),但遇到了一些问题。使用vcpkg似乎是实现这一点的最简单方法。到目前为止,我已经学习了以下教程:https://www.youtube.com/watch?v=b7SdgK7Y510和https://www.youtube.com/watch?v=iZeK3Ie5Fz0但当我试图包含一个文件时,我总是会收到这些错误:
无法打开源文件";opencv2/核心.hpp";
找不到"opencv2/core.hpp"文件
vscode提供的快速修复程序说通过vcpkg安装opencv,但我已经这样做了。我已经根据教程链接了vcpkg,并在我的settings.json文件中包含了cmake工具链文件的路径。
以下是我对settings.json文件所做的更改:
{
"cmake.configureSettings": {
"CMAKE_TOOLCHAIN_FILE": "/Users/oliverpasquesi/coding/dev/vcpkg/scripts/buildsystems/vcpkg.cmake"
}
}
这是CMakeLists.txt文件(与第二个教程中列出的文件相同):
cmake_minimum_required(VERSION 3.0.0)
project(photoText.cpp VERSION 0.1.0)
add_executable(photoText.cpp main.cpp)
以下是c_cpp_properties.json文件的includePath部分(包括第二个路径对抛出的错误没有任何影响):
"includePath": [
"${default}",
"/Users/oliverpasquesi/coding/dev/vcpkg/installed/x64-osx/include/opencv2/**"
]
如果有用的话,我在运行Darwin x64 21.5.0的mac上使用vscode 1.49.2。
我很感激你的帮助!
您还需要在CMakeLists.txt文件中引用您的库,因为CMake使用该文件来准备构建项目。
一种现代的方法是添加两行:
- 查找正在使用的库的find_package()行。正如您已经引用了vcpkg.cmake工具链文件一样,当您添加该行时,cmake应该能够找到vcpkg已经安装的任何库。看见https://cmake.org/cmake/help/latest/command/find_package.html以获取文档
- target_link_libraries()行列出了要链接到项目的库。请参阅此处的CMake文档:https://cmake.org/cmake/help/latest/command/target_link_libraries.html
当你使用opencv库时,你可能也想看看这个问题的答案:使用cmake 在项目中链接opencv
具体来说,尝试将这些行添加到您的CMakeLists.txt:
find_package(OpenCV REQUIRED)
target_link_libraries(photoText.cpp ${OpenCV_LIBS})
vcpkg关于其CMake集成的文档(用于其他参考):https://vcpkg.io/en/docs/users/buildsystems/cmake-integration.html
希望这能有所帮助!
免责声明:我使用vcpkg工具。