Intellisense VSCode не реагирует на include path библиотеки wxWidgets скомпилированной MinGW на Windows

Скомпилировал библиотеку wxWidgets на Windows. Использую MinGW gcc. Использую редактор VSCode. Настроил CMakeLists. Для теста взял "hello world" с оф.страницы wxWidgets. Скомпилировал, запустил. Всё отлично.

Но в исходнике получаю подчеркивание красной линией строки #include <wx/wx.h>. Описание ошибки : #include errors detected. Please update your includePath. Squiggles are disabled for this translation unit cannot open source file "wx/wx.h"C/C++(1696)

В json файле c_cpp_properties.json

includePath:[

"${workspaceFolder}/**",
"${env:WXWIN}/include/**",
"${env:WXWIN}/lib/gcc_lib/**"
        

]

Указанный путь существует. Переменная окружения определена (указание прямого пути ничего не меняет!). Не могу разобраться в чем дело? Знаний маловато. Прошу помощи. Как устранить эту ошибку?


Ответы (1 шт):

Автор решения: sergey

При использовании пакета MinGW на Windows у плагина С++ от Microsoft, видимо, возникает проблема с построением путей к включаемым библиотекам (я особо не разобрался).

Для того, чтобы работала система Intellisense:

  1. <wxWidgets>/lib/vclib переименовал в <wxWidgets>/lib/vc_lib
  2. <Каталог пользователя/.vscode/extensions/ms-vscode.cpptools-1.22.11-win32-x64/bin/wx> (это место расположения плагина) - сюда скопировал все файлы из D:/<wxWidgets>/include/wx.
  3. Открыл плагин, нажал шестеренку, выбрал settings. В разделе IntelliSense нашел C_Cpp>Default: Include Path. Добавил 2 строки:
    D:/<wxWidgets>/include
    D:/<wxWidgets>/lib/gcc_lib/mswud/**
    
  4. файл c_cpp_properties.json:
    реквизит "includePath": [
             "${default}",
             "D:/<wxWidgets>/include/msvc"]
    
  5. CMakeLists.txt выглядит так:
    cmake_minimum_required(VERSION 3.26.0)
    project(wxTest VERSION 0.1.0 LANGUAGES C CXX)
    set(wxWidgets_ROOT_DIR "D:/wxWidgets-3.2.6")
    set(wxWidgets_USE_STATIC ON)
    find_package(wxWidgets REQUIRED COMPONENTS net gl core base)
    include(${wxWidgets_USE_FILE})
    include_directories(${wxWidgets_INCLUDE_DIRS})
    file(GLOB compile_files
        src/*
    )
    add_executable(wxTest ${compile_files})
    if(wxWidgets_FOUND)
    include(${wxWidgets_USE_FILE})
    target_link_libraries(wxTest ${wxWidgets_LIBRARIES})
    target_include_directories(wxTest PRIVATE ${wxWidgets_INCLUDE_DIR})
    endif()
    
    target_link_libraries(wxTest -static-libgcc -static-libstdc++ -static -lpthread)
    

Я понимаю, что это даже на костыль не тянет, но всё собирается, компилируется, работает, IntelliSense подсказывает, дополняет и т.д.

→ Ссылка