Я работаю над созданием малины Pi Mine Mine, проект, который зависит от GPIO, совместимый с Raspberry Pi 5. (Raspberry Pi 5, в целом, вызвал большое горе из -за нового чипсета GPIO.) < /P>
, достигнув точки, когда я решил все свои собственные проблемы с GPIO, я оставил справиться с одной библиотекой чужой, нуждающейся в обновлении. Я мог бы, конечно, просто взять свою собственную вилку их проекта и пойти на свой собственный веселый путь, когда у меня есть рабочий код, но я хотел бы предложить то, что я сделал в качестве запроса на привлечение.
Есть одна вещь, которая может быть точкой прилипания, которую я хотел бы избежать, если это возможно. Я представил новую зависимость от библиотеки libgpiod . Я бы хотел, чтобы этот новый код компилировался на Raspberry Pi 3 или 4 без установки Libgpiod, но воспользуйтесь в полной мере, если он присутствует. < /p>
Код: Выделить всё
{
"targets": [
{
"variables": {
"dht_verbose%": "false"
},
"target_name": "node_dht_sensor",
"sources": [
"src/bcm2835/bcm2835.c",
"src/node-dht-sensor.cpp",
"src/dht-sensor.cpp",
"src/util.cpp",
"src/abstract-gpio.cpp", //
Вот начало моего абстрактного gpio.cpp: < /p>
#include "abstract-gpio.h"
#include
#include "bcm2835/bcm2835.h"
#include
#include //
Мои навыки C ++ в лучшем случае ржавые. До сих пор я не трогал свой собственный код C ++ в течение пяти лет, и пять лет назад я не трогал C ++ более десяти лет. < /P>
node-gyp? На этом этапе я просто следовал примерам и простым рецептам. Я не хочу, чтобы пользователь должен беспокоиться о Libgpiod, если он не использует Raspberry Pi и не имеет веских причин для его установки. И, возможно, в случае необходимости, фиктивные заглушки C ++ C ++ (которые не мешают реальному либе, если присутствуют), которые могут решить эту проблему для меня? > < /p>
Вот несколько, но не полностью удовлетворительное решение, которое требует, чтобы пользователь установил модуль таким образом: < /p>
npm install node-dht-sensor --use_libgpiod=trueКод: Выделить всё
{
"targets": [
{
"variables": {
"dht_verbose%": "false",
"use_libgpiod%" : "false"
},
"target_name": "node_dht_sensor",
"sources": [
"src/bcm2835/bcm2835.c",
"src/node-dht-sensor.cpp",
"src/dht-sensor.cpp",
"src/util.cpp",
"src/abstract-gpio.cpp",
],
"include_dirs": [
"
Подробнее здесь: [url]https://stackoverflow.com/questions/79437929/working-with-node-gyp-and-c-is-there-a-way-to-make-a-dependency-on-a-particul[/url]
Мобильная версия