Est-il possible d'inclure une bibliothèque d'une autre bibliothèque en utilisant l'IDE Arduino?
Je suis en train d'écrire un Arduino bibliothèque (en fait, une classe C++) qui lui-même fait référence à une autre bibliothèque que j'ai installé dans mon Mac ~/Documents/Arduino/libraries répertoire.
En haut de l' .rpc de la bibliothèque, je suis en train d'écrire, j'ai essayé
#include <ReferencedLibrary.h>
et
#include "ReferencedLibrary.h"
... ni de qui travaillent. Je peux réussir à #include <ReferencedLibrary.h>
à partir de croquis dans mon ~/Documents/Arduino répertoire. Ai-je raté quelque chose ou est-ce une limitation de l'IDE Arduino/makefile? Est-il une solution?
source d'informationauteur Robert Atkins
Vous devez vous connecter pour publier un commentaire.
Ce problème a été résolu dans l'Arduino version 1.6.6. Les notes de version de 1.6.6 mentionner que la bibliothèque de dépendances de la bibliothèque ont été corrigés.
Mise à jour de votre version 1.6.6, ou plus récente, permettra de résoudre votre problème.
J'ai été en mesure d'inclure une bibliothèque dans une autre bibliothèque Arduino à l'aide d'un chemin d'accès relatif. Par exemple, pour inclure la AbstractSwitch bibliothèque dans la DigitalSwitch de la bibliothèque, en supposant que ces deux bibliothèques vivent dans leurs propres dossiers distincts au sein d'Arduino standard de dossier de la bibliothèque, vous pouvez utiliser l'instruction inclure suivante:
En d'autres termes, votre déclaration doit se lire:
La documentation ici http://www.arduino.cc/en/Hacking/BuildProcess états:
Cela signifie que si vous
#include "ReferencedLibrary.h"
de votre principal esquisse de fichier, cela entraîne que le fichier d'libraries
répertoire pour obtenir ajouté le chemin pour d'autres bibliothèques à inclure. Un peu un hack, mais il ne fonctionne pas sur mon Mac.À l'aide de l'Arduino de l'environnement, ce que je comprends, vous ne pouvez pas accéder à votre propre bibliothèque à partir d'un autre de vos propres bibliothèques. Il n'y a aucun moyen d'ajouter des chemins, donc il n'y a tout simplement aucun moyen pour le compilateur pour trouver le code. Qui le rend difficile à écrire les bibliothèques qui utilisent le code dans un autre de vos bibliothèques. Mes recherches sur le web, indique que cela a été un problème pendant des années, mais, à ma connaissance, n'a pas été résolu. Je soupçonne qu'il ya des difficultés dans la mise en œuvre de détails ou peut-être un désir de garder la simplicité du système, au détriment de la capacité.
Bien sûr, vous pouvez toujours couper et de coller le code dans chaque nouvelle bibliothèque, mais c'est extrêmement sous-optimale. Vous pouvez également écrire une immense bibliothèque avec tous de votre code dans une paire de .h et .fichiers cpp. Que ce n'est pas très satisfaisant, mais je l'ai fait à l'occasion.
Il y a un travail autour, cependant, pour l'utilisation standard Arduino bibliothèques dans votre propre bibliothèque que vous placez dans votre carnet de croquis/répertoire des bibliothèques. Depuis les esquisses de chemins d'accès à la bibliothèque standard endroits, et le lien de la bibliothèque standard de code, vous pouvez inclure le fichier d'en-tête de la bibliothèque standard de l'intérêt dans votre croquis. Ci-dessous, également dans votre croquis, inclure votre propre bibliothèque de fichier d'en-tête. La bibliothèque standard sont alors disponibles à votre bibliothèque ainsi que de votre esquisse.