Как заставить VScode открывать исходный файл

Я пытаюсь использовать VScode для навигации по коду проекта с открытым исходным кодом SCIRun. Когда я просматриваю файлы проекта (.cpp, .h), я вижу следующее ошибки.

Несмотря на то, что заголовочный файл был "обнаружен" автодополнением (которое делается через движок Intelisense), я не могу открыть этот файл. Я пробовал много вещей, таких как настройка параметра includePath для многих комбинаций (с/без рекурсивного поиска) и других опций в IntelliSense Configurations.

Мой файл c_cpp_properties.json (с настройкой includePath)

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/src/**"
            ],
            "defines": [],
            "configurationProvider": "ms-vscode.cmake-tools",
            "cStandard": "gnu17",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "linux-gcc-x64",
            "browse": {
                "databaseFilename": "",
                "path": [],
                "limitSymbolsToIncludedHeaders": false
            }
        }
    ],
    "version": 4
}

Я не уверен, почему это происходит. Этот проект довольно сложен в реализации. Он использует CMake и множество «проектов CMake» со многими CMakeLists.txt файлами и одним корневым CMake Superbuild.cmake. Упрощенное дерево проекта будет выглядеть так

.
├── appveyor.yml
├── (...)
├── compile_commands.json -> ./bin/SCIRun/compile_commands.json
├── src
│       ├── CMake
│       │   ├── Modules
│       │   │   ├── CPack.Distribution.dist.in
│       │   │   ├── (...)
│       ├── CMakeLists.txt
│       ├── Core
│       │   ├── Datatypes
│       │   │   ├── (...)
│       │   │   ├── MatrixAlgorithms.cc
│       │   │   ├── MatrixAlgorithms.h
│       │   │   ├── Matrix.cc
│       │   │   ├── MatrixComparison.h
│       │   │   ├── MatrixFwd.h
│       ├── Superbuild
│       └── windowsBuild.bat
├── Superbuild
│       ├── BoostConfig.cmake.in
│       ├── BoostExternal.cmake
│       ├── Cleaver2External.cmake
│       ├── CMakeLists.txt
│       ├── CtkExternal.cmake
│       ├── (...)
└── (...)

Я хочу просто иметь возможность чтения исходных файлов с легким доступом к файлам (заголовки и т.д.). Проверка синтаксиса на наличие ошибок также была бы полезна, но не настолько необходима.

если вы используете плагин cmake, вы должны просто позволить ему настроить IntelliSense и удалить ваш файл c_cpp_properties.json

Alan Birtles 21.03.2022 13:08

Это не связано с языком C++: это чисто проблема VSCode (плохо настроенная) ... VSCode должен безупречно импортировать проект CMake, по крайней мере, он сделал это в последний раз, когда мне пришлось использовать этот инструмент. Я не думаю, что CMake тоже причастен к этой проблеме.

Wisblade 21.03.2022 13:10

@Wisblade Да, вы, наверное, правы, я изменил теги

jacaWaca 22.03.2022 23:20

@AlanBirtles Хорошо, я попытался удалить этот файл, но возникла проблема. Я попытаюсь снова импортировать проект и снова все настроить.

jacaWaca 22.03.2022 23:22

Добавление ${workspaceFolder}/src/** к includePath устранило для меня большинство ошибок. Осталась одна ошибка для boost, которую я сейчас пытаюсь установить с помощью vcpkg.

md2perpe 22.03.2022 23:56

@md2perpe Итак, вы добавили ${workspaceFolder}/src/** к includePath в файле .vscode/c_cpp_properties.json? Изменили ли вы что-нибудь кроме этого в конфигурации проекта? Если вы изменили .vscode/c_cpp_properties.json, не могли бы вы вставить его сюда?

jacaWaca 27.03.2022 20:24

@md2perpe Спасибо! Единственным отличием, которое я нашел, была строка "configurationProvider": "ms-vscode.cmake-tools", которая была в моем c_cpp_properties.json, но отсутствует в вашем. После того, как я удалил, теперь он работает так, как я хотел!

jacaWaca 29.03.2022 14:32
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
8
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решено с помощью md2perpe.

Ошибка была вызвана неправильной настройкой .vscode/c_cpp_properties.json, вот так

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/src/**",
                "${workspaceFolder}/src/**",
                "${workspaceFolder/**",
                "${workspaceFolder}"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "gnu17",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "linux-gcc-x64",
            "configurationProvider": "ms-vscode.cmake-tools"
        }
    ],
    "version": 4
}

Строка "configurationProvider": "ms-vscode.cmake-tools" вызывала проблему. Эти параметры позволяют расширениям VS Code предоставлять информацию о конфигурации IntelliSense для исходных файлов (документов)[https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference]. На данный момент я не уверен, поставил ли я это сам или это было сделано каким-то расширением.

Мой .vscode/c_cpp_properties.json теперь выглядит так (см. также ссылку, предоставленную md2perpe).

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/src/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "gnu17",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

Другие вопросы по теме