Visual Studio CMake с vcpkg: ошибка gdal не найдена - PullRequest
0 голосов
/ 07 апреля 2020

Я пытался создать проект cmake c ++. В частности, я пытаюсь использовать библиотеку GDAL в этом проекте. В CMakeLists.txt говорится, что find_library(GDAL gdal) после некоторых исследований я обнаружил, что Visual Studio может открывать файлы cmake по умолчанию, как указано в этой теме: https://docs.microsoft.com/en-us/cpp/build/cmake-projects-in-visual-studio?view=vs-2019.

Кроме того, Visual Studio также должна автоматически включать библиотеку GDAL, как только я правильно настрою vcpkg. Я уже скачал версию библиотеки x64- windows (vcpkg install gdal:x64-windows), чтобы создать правильную архитектуру, и сделал ее доступной через vcpkg integrate install в масштабе всего пользователя.

После некоторые проб и ошибок, теперь все работает нормально, набор инструментов включается соответствующим образом, и библиотека находит автоматически, что приводит к такой конфигурации:

mycmakeconfig

Однако при попытке включить заголовочные файлы (или что-либо еще; см. Фрагмент кода) Visual Studio, похоже, неправильно связывает библиотеку, поскольку это приведет к сообщению об ошибке: cannot open source file "gdal/gdal.h".

#include <gdal/ogrsf_frmts.h>
#include <gdal/gdal.h>
#include <gdal>

Где я должен продолжить расследование?

1 Ответ

0 голосов
/ 09 апреля 2020

Как говорили другие vcpkg integrate install и vcpkg.cmake, они не работают вместе, причина:

set_target_properties(${name} PROPERTIES VS_USER_PROPS do_not_import_user.props)
set_target_properties(${name} PROPERTIES VS_GLOBAL_VcpkgEnabled false)

это деактивирует интеграцию. Причина деактивации интеграции заключается в том, что вы не пишете неполный CMakeLists.txt (например, отсутствует каталог include или не связываете все необходимые библиотеки).

Заменить find_library(GDAL gdal) на find_package(GDAL REQUIRED) и target_link_libraries против цели GDAL::GDAL (https://cmake.org/cmake/help/v3.17/module/FindGDAL.html)

...