Почему Intellisense с Emscripten не находит путь включения SDL2 / SDL.h? - PullRequest
1 голос
/ 06 мая 2020

Я разрабатываю на Win10 программу C ++ для Webassembly.

#include <SDL2/SDL.h>
#include <stdlib.h>
#include <emscripten.h>

int main() {
    printf("Hello World!");
}

Emscripten сам правильно создает файл .wasm. Но Intellisense в Visual Studio Code всегда показывает, что the source of #include <SDL2/SDL.h> не может быть найдено. Мой c_cpp_properties. json выглядит так:

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "E:\\PROGRAMS\\emsdk-master\\upstream\\emscripten\\system\\**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "E:\\PROGRAMS\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gcc.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

Я не могу найти каталог SDL2 в ...\\emsdk-master\\upstream\\emscripten\\system\\". Что делаю не так?

1 Ответ

1 голос
/ 02 июля 2020

Предполагая, что вы используете версию SDL2 для портов Emscripten (через -s USE_SDL=2), вам необходимо добавить установленный каталог include для портов Emscripten в ваш "includePath".

Обычно он находится по адресу .emscripten_cache/wasm-obj/include в вашем профиле пользователя (например, C:\Users\PowerNow\.emscripten_cache\wasm-obj\include).

Этот каталог может существовать только после первого запуска emcc или em++ с опцией -s USE_SDL=2 (или аналогичной опцией для других портов) .

"includePath": [
    "${workspaceFolder}/**",
    "E:\\PROGRAMS\\emsdk-master\\upstream\\emscripten\\system\\**",
    "C:\\Users\\PowerNow\\.emscripten_cache\\wasm-obj\\include"
],
...