Я пытаюсь преобразовать проект, который прекрасно компилируется на MacOS и Linux (в частности, Raspbian), чтобы он компилировался на Windows. (Полный код здесь: https://github.com/kshetline/rpi-acu-rite-temperature)
После большого горя (Как-то так, что установленный мною Node 12 ушел и меня заменили на Node 8 без моего ведома и на Windows C ++ long
и int
являются 32-разрядными? Правда !?) Я наконец-то создал код для компиляции, используя и node-gyp
, и Visual Studio 2019, но для настройки Visual Studio задано определенное значение. c версия Node таким способом, который мне не нравится.
Вот мой CppProperties.json
файл:
{
"configurations": [
{
"inheritEnvironments": [
"msvc_x86"
],
"name": "x86-Debug",
"includePath": [
"${env.INCLUDE}",
"${env.LOCALAPPDATA}\\node-gyp\\Cache\\12.16.1\\include\\node\\**",
"${workspaceRoot}\\**"
],
"defines": [
"WIN32",
"_DEBUG",
"NAPI_CPP_EXCEPTIONS",
"UNICODE",
"_UNICODE",
"USE_FAKE_PIGPIO"
],
"intelliSenseMode": "windows-msvc-x86"
}
]
}
Я не хочу указывать конкретный * Версия Node 1040 * в моем пути включения, но я не знаю, как заставить это работать без него. Я даже не могу заставить его работать для конкретной c основной версии Node с помощью 12.*
или 12.**
- здесь мне не подходят подстановочные знаки.
Не вижу Windows переменная окружения, которая позволила бы мне использовать что-то вроде, скажем, ${env.NODE_VERSION}
, и в AFAIK нет предопределенной переменной VS, которая бы справилась бы и с этим.
Я мог бы использовать свою собственную переменную окружения, но это я должен обновляться вручную, чего я и стараюсь избегать.
Есть ли в Visual Studio способ, которым я мог бы написать сценарий обновления, например, выполнив команду node --version
, удалив начальную букву ' v 'из вывода, а затем поместить результат в переменную окружения?
Любые другие возможные решения?
Обновление:
Я изменил настройка моего проекта Visual Studio, начиная с универсального c приложения командной строки, и конфигурация работает совершенно по-другому, без файла CppProperties.json
вообще, но проблема остается в основном той же - у меня теперь есть $(LOCALAPPDATA)\node-gyp\Cache\12.16.1\include\node
ent Вместо этого перейдите в диалог настроек.