Wenn Sie mit Node-GYP und C ++ arbeiten, gibt es eine Möglichkeit, eine bestimmte Bibliothek optional abhängig zu machen

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wenn Sie mit Node-GYP und C ++ arbeiten, gibt es eine Möglichkeit, eine bestimmte Bibliothek optional abhängig zu machen

by Guest » 14 Feb 2025, 04:13

automatisch auch optional, einfach durch Testen auf das Vorhandensein der Bibliothek, vermeiden Sie, dass der Benutzer Argumente übergeht oder Umgebungsvariablen definiert. PI -Projekt von mir, ein Projekt, das von GPIO abhängt, kompatibel mit dem Raspberry PI 5. (Der Raspberry Pi 5 hat im Allgemeinen aufgrund eines neuen GPIO -Chipsatzes viel Trauer verursacht.) < /P>
Nachdem ich den Punkt erreicht hatte, an dem ich alle meine eigenen GPIO -Probleme gelöst hatte, hatte ich gegangen, um eine Bibliothek eines anderen zu bewältigen, das ein Upgrade benötigte. Ich könnte natürlich einfach meine eigene Gabelung ihres Projekts nehmen und jetzt, wo ich Arbeitscode habe, meinen eigenen Weg gehen, aber ich möchte anbieten, was ich als Pull -Anfrage getan habe.
Es gibt jetzt eine Sache, die ein Knackpunkt sein könnte, was ich nach Möglichkeit vermeiden möchte. Ich habe eine neue Abhängigkeit von der libgpiod Bibliothek eingeführt. Ich möchte, dass dieser neue Code auf einem Raspberry Pi 3 oder 4 kompiliert wird, ohne dass libgpiod installiert wurde, aber nutzen Sie die libgpiod, wenn vorhanden. < /p>

Code: Select all

{
"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", // 
Hier ist der Beginn meines abstrakt-gpio.cpp: < /p>
#include "abstract-gpio.h"

#include 
#include "bcm2835/bcm2835.h"
#include 
#include  // 
Meine C ++ -Fertigkeiten sind bestenfalls verrostet. Bis jetzt hatte ich meinen eigenen C ++-Code seit fünf Jahren nicht mehr berührt, und vor fünf Jahren hatte ich C ++ seit über einem Jahrzehnt nicht mehr berührt. Ich habe zu diesem Zeitpunkt lediglich Beispiele und einfache Rezepte verfolgt. Ich möchte nicht und vielleicht, wenn nötig, dummy libgpiod c ++ stubs (das nicht die reale libgpiod stört), die dieses [url=viewtopic.php?t=11587]Problem[/url] für mich lösen kann?
 Update:  < /p>
Hier ist eine etwas, aber nicht vollständig zufriedenstellende Lösung, bei der ein Benutzer das Modul wie folgt installieren muss: < /p>
npm install node-dht-sensor --use_libgpiod=true

...Wenn sie benötigen (oder wollen ... funktioniert dies auch auf einem RPI 4), um libgpiod zu verwenden, sodass die Standardinstallation ohne zusätzlichen Parameter auferlegt werden kann Keine neuen Bibliotheksabhängigkeiten.

Code: Select all

{
"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": [
" durch etwas automatisches, dem moralischen Äquivalent, zu ersetzen, das moralische Äquivalent von "verfügbar (libgpiod)"  oder "existiert ('/usr/include/gpiod.h')" , falls eine solche Knoten-GYP-Fähigkeit vorhanden ist, die einfach nicht einfach in in der Lage ist Die Dokumentation.

Top