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 шт):
При использовании пакета MinGW на Windows у плагина С++ от Microsoft, видимо, возникает проблема с построением путей к включаемым библиотекам (я особо не разобрался).
Для того, чтобы работала система Intellisense:
<wxWidgets>/lib/vclib
переименовал в<wxWidgets>/lib/vc_lib
<Каталог пользователя/.vscode/extensions/ms-vscode.cpptools-1.22.11-win32-x64/bin/wx>
(это место расположения плагина) - сюда скопировал все файлы изD:/<wxWidgets>/include/wx
.- Открыл плагин, нажал шестеренку, выбрал
settings
. В разделеIntelliSense
нашелC_Cpp>Default: Include Path
. Добавил 2 строки:D:/<wxWidgets>/include D:/<wxWidgets>/lib/gcc_lib/mswud/**
- файл
c_cpp_properties.json
:реквизит "includePath": [ "${default}", "D:/<wxWidgets>/include/msvc"]
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 подсказывает, дополняет и т.д.