Как добавить сторонние исходные файлы (рекурсивно) не для сборки, а просто для просмотра определений в vscode с CMake? - PullRequest
0 голосов
/ 21 февраля 2020

Я использую VScode с CMake. Я построил библиотеку OpenCV. Я могу включить заголовки OpenCV и связать библиотеки OpenCV. Расширения vscode. cpp могут go декларировать с помощью compile_commands. json, сгенерированных после конфигурации CMake для Intellisense. Но как я могу go к определению функций? Что я должен добавить в свой CMakeLists.txt. Как насчет:

file(GLOB OpenCV_Sources "D:\\\Include\\\opencv-3.4.9\\\modules" "*.cpp")

Кажется, не работает.

1 Ответ

0 голосов
/ 21 февраля 2020

РЕДАКТИРОВАТЬ:

Для кода Visual Studio необходимо изменить конфигурации C / C ++, чтобы включить путь к этим внешним источникам, чтобы Intellisense мог их найти.

  1. Откройте код Visual Studio Палитра команд (CTRL + SHIFT + P) и введите «Редактировать конфигурации».
  2. Выберите C / C ++: Изменить настройки (UI) , прокрутите вниз до Включить путь и добавьте путь к своим внешним заголовкам / источникам на отдельной строкой (Обратите внимание, используйте **, чтобы сделать поиск рекурсивным.)

    D:/Include/opencv-3.4.9/modules/**
    

Если вы предпочитаете редактировать конфигурационный файл кода Visual Studio JSON вручную, вот c_cpp_properties.json ссылка на файл с документацией includePath .


Для Visual Studio в целом (не для кода Visual Studio):

Вы можете извлекать внешние источники в Visual Studio, чтобы Intellisense мог ссылаться на них, создав еще одну цель CMake. И да, вы можете использовать file(GLOB ...), чтобы получить список источников для включения, но затем вы должны добавить источники к target , чтобы они отображались как отдельная цель CMake в ваша Visual Studio IDE.

Чтобы внешние источники не были встроенными , вы можете использовать EXCLUDE_FROM_ALL при создании цели. Попробуйте что-то вроде этого:

file(GLOB OpenCV_Sources "D:/Include/opencv-3.4.9/modules/*.cpp")
add_library(OpenCV_ExternalSource EXCLUDE_FROM_ALL ${OpenCV_Sources})

Обратите внимание, используйте параметр GLOB_RECURSE с командой file() вместо рекурсивно поиска в указанном каталоге всех .cpp файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...