Eu sou novo no desenvolvimento do Arduino / C (proveniente de um ambiente JavaScript / Ruby), mas queria saber se era possível incluir uma biblioteca de uma pasta personalizada dentro de um esboço?
Então esta é a minha situação;
project.ino
libs/
MyNewLib/
MyNewLib.h
MyNewLib.ccp
Agora, minha pergunta é: como posso incluir minha biblioteca personalizada? Eu tentei várias variações sobre isso;
# project.ino
#include <libs/MyNewLib/MyNewLib.h>
#include "libs/MyNewLib/MyNewLib.h"
#include <./libs/MyNewLib/MyNewLib.h>
#include "./libs/MyNewLib/MyNewLib.h"
Mas nenhum deles funciona. Alguém pode me dizer se isso é possível? Analisei essa questão na Web, mas não encontro nenhuma resposta satisfatória. Espero que vocês possam ajudar.
Felicidades.
ATUALIZAR
Estou ciente de que você pode colocar suas bibliotecas na sua pasta global de bibliotecas, mas eu as quero na minha pasta local do projeto. Quero compartilhá-los através do git com minha equipe.
library
sketch
system-design
Stefan
fonte
fonte
include
especificando o caminho / to / library /, que é o que eu acho que você está perguntando.Respostas:
Ok, aqui está como funciona, e eu verifiquei para ter certeza.
Claro que você pode usar caminhos rígidos, mas todo programador odeia usar caminhos rígidos. Eles não são portáteis e bloqueiam seu programa no lugar. Você usa links flexíveis ou físicos para os arquivos no projeto (consulte as páginas de manual em "ln"). Mas ... fale sobre feio! Então a questão é como fazê-lo "corretamente"? A chave é aprender com quais parâmetros e em que caminho o compilador C / C ++ é executado.
Você verá que a conclusão NÃO é intuitiva. Indo direto ao ponto: caminhos relativos não funcionam corretamente. Agora porque?
Mas primeiro, deixe-me explicar por que alguém iria querer colocar arquivos de programa fora do diretório do projeto. Os programadores gostam de escrever classes, estruturas, métodos, funções, macros etc., uma vez. Assim que o programador solidificar o fragmento do programa, ele / ela deseja colocar os arquivos em uma árvore comum e seguir em frente. Todos os programas posteriores poderiam usar essa biblioteca privada. Além disso, ao ter os arquivos em um local central, você não terá várias cópias e versões de cada. Uma biblioteca privada para muitos programas particulares.
A partir da versão 1.6.13 (o Teensy ainda não suporta 1.8. *), O relativo inclui o início da biblioteca , não o seu diretório. Parece que o filtro de ano para C (lembre-se de que o Arduino faz uma "conversão" no destino e depois chama o compilador C / C ++) começa onde você instalou sua árvore do Arduino. No meu caso, eu instalei no "~ / bin / arduino". A casa de Teensy é "./hardware/teensy". O caminho inicial completo para as bibliotecas é "~ / bin / arduino / hardware / teensy / avr / libraries", onde você encontrará todas as árvores do programa de suporte.
Em um arquivo de origem, a instrução '#include "test.hpp"' seleciona corretamente o arquivo do diretório atual. No entanto, se você usar '#include "../test.hpp",' o caminho de inclusão não será iniciado no diretório do projeto. Em vez disso, começa em "./libraries"! Portanto, o caminho resultante é:
#include "../test.hpp" ==> ./arduino/hardware/teensy/avr/libraries/test.hpp
Em conclusão, não há uma maneira limpa de criar sua própria árvore de ferramentas em um diretório próximo. O único curso é comprometer seu trabalho na biblioteca do Arduino e estar ciente dessas regras também.
fonte
Acabei de voltar a usar o arduino depois de algum tempo e estou um pouco confuso com problemas semelhantes e confuso com informações diferentes de sites diferentes e versões diferentes do ide.
O que descobri é que, se você tiver um rascunho em um diretório, desligue a Ide e solte os arquivos .h, .cpp ... no diretório e o ide, quando reiniciado, os abrirá com o rascunho.
Inclua-os usando aspas simples nos nomes dos arquivos, sem caminho, sem colchetes angulares.
Estou certo de que isso é apenas parte da resposta completa, mas isso já me deu início.
fonte
Tanto quanto eu sei, você pode incluir suas bibliotecas de um local personalizado usando o caminho absoluto.
Como os caminhos absolutos podem ser chatos do ponto de vista da portabilidade de código, você pode definir algumas macros para obter o caminho absoluto de um dado relativo. Dessa forma, você precisaria apenas corrigir o caminho da 'raiz do projeto' ao passar de um dispositivo para outro.
Defina a pasta raiz do seu projeto:
Defina uma macro 'transformação' relativa ao absoluto:
Inclua seus arquivos usando o caminho relativo:
Espero que seja útil.
fonte
O plug-in do Arduino para Visual Studio suporta bibliotecas locais. Você pode encontrar o plug-in aqui
fonte
Testei recentemente essa estrutura de biblioteca local. Trabalha com:
O pré-processamento do Arduino IDE 1.6.7 compila até o código-fonte da biblioteca.
Felicidades!
fonte
A maneira mais simples de encontrar isso é armazenar as bibliotecas no diretório de esboço local e criar um link simbólico no diretório [HOME] / Arduino / libraries. Depois, você pode acessá-los facilmente no Git com seu esboço / projeto e o Arduino ainda está feliz porque as bibliotecas estão acessíveis na pasta global.
Talvez até crie um script de instalação que crie esses links automaticamente e verifique isso também no Git.
fonte
Outra correção realmente ruim - crie um arquivo chamado
libraries.cpp
, que contém:Obviamente, isso só funciona se a biblioteca não contiver nenhuma inclusão ...
fonte