Como gerenciar dependências?


9

Quero incluir uma dependência como Log . Na sua página diz:

  • Baixar arquivo zip
  • Coloque a pasta de log em "bibliotecas \".

Não quero acreditar (com a mentalidade de Maven) que é assim que gerenciamos dependências em projetos do Arduino. Isso significa que todo mundo que faz check-out do meu pacote precisa repetir essas etapas localmente (ou você inclui "bibliotecas" no controle de versão) Qual é a melhor prática para o gerenciamento de dependências?


Não, é isso que todo mundo faz.
Code Gorilla

Bibliotecas é o que são bibliotecas. Este não é o Maven. Este é o Arduino. É simplista para que pessoas sem conhecimento de microcontroladores possam fazer um LED piscar. Se você deseja facilidades reais de IDE, use um IDE real.
Majenko

11
Bem, estou usando o primeiro hit no Google para Arduino IDE, mas isso não me ajuda com dependências. Fazer um LED piscar não requer uma biblioteca e eu concordo que as coisas devem ser simples. Essa é a mesma razão pela qual peço gerenciamento de dependência.
Markus Malkusch

Procure pelo IDE C ++ ou IDE G ++. E paracrosscompiling
gilhad 28/05

Respostas:


6

O Arduino é destinado a ser uma maneira fácil para pessoas não técnicas e, portanto, esconde o máximo que pode da vista simples para ser simples.

Para um projeto simples, ele funciona com o custo de copiar bibliotecas aqui e ali e usar o "IDE" do Arduino. Chamar os programas de "esboços" e manipulá-lo para ocultar, está em C ++. E assim por diante.

Se você deseja criar projetos mais complicados, controle de versão, bom ambiente e outros, precisa sair do "modo simples do Arduino" e começar a usar ferramentas mais poderosas e complicadas.

Pessoalmente, uso https://github.com/sudar/Arduino-Makefile https://github.com/ladislas/Bare-Arduino-Project e o tenho nos repositórios GIT.

Dessa forma, eu posso compartilhar bibliotecas entre projetos em grupo, também links para bibliotecas fora das obras em árvore, bem como sub-módulos gits, ambos permitindo que você tenha bibliotecas atualizadas de terceiros disponíveis para todos os projetos, também os antigos.

Eu ainda uso muito Arduino (como setup / loop, digitalRead e outros), mas também uso construções g ++ "normais" no caminho. Mais tarde, divergirei ainda mais para o código C / g ++ / .. comum, provavelmente, usando alguns RTOS ou mais, mas agora minhas necessidades ainda não estão tão longe. (google "arduino rtos" Atualmente, estou lendo https://github.com/greiman/NilRTOS-Arduino )

O Arduino não deve ser uma "melhor prática" de qualquer maneira. É para ser "uma maneira rápida e fácil de fazer algo, quando você não sabe nada". E funciona, pois qualquer pessoa e seu cão podem começar com o Arduino e, se estiver interessado, podem ir mais longe por conta própria, ou podem seguir com calma e se divertir de qualquer maneira.


1

Se você deseja que o projeto seja independente, é possível colocar as dependências da biblioteca na pasta de esboço. Portanto, a estrutura de pastas do esboço Foo com a dependência da biblioteca Logging seria algo parecido com isto:

Foo
|_Foo.ino
|_src
  |_Logging
    |_Logging.h
    |_Logging.cpp

E no Foo.ino você incluirá a biblioteca assim:

#include "src/Logging/Logging.h"

Infelizmente, algumas bibliotecas usam a sintaxe de inclusão incorreta, que ainda funciona quando a biblioteca está instalada em uma das pastas de bibliotecas, mas não quando localizada na pasta de esboço. A biblioteca de log usa a sintaxe de inclusão correta, mas às vezes para colocar bibliotecas na pasta de esboço, você precisará corrigir isso. Por exemplo, digamos que você tenha uma biblioteca chamada Bar e no Bar.cpp você vê isto:

#include <Bar.h>

Isso não funcionará porque, se instalado na pasta de esboço Bar.h, não será localizado em um dos caminhos de inclusão padrão, você precisará editar o Bar.cpp e alterar a sintaxe de inclusão para:

#include "Bar.h"

O que fará com que a pasta local seja procurada pelo arquivo incluído.

A desvantagem deste sistema é que você pode acabar com várias cópias de uma biblioteca, por isso é mais trabalhoso atualizar ou modificar cada cópia. Obviamente, isso também pode ser um benefício, pois cada projeto pode ter sua própria versão de trabalho conhecida da biblioteca que não será afetada por nenhuma atualização que você possa fazer na mesma biblioteca usada em outros projetos.

Geralmente, apenas adiciono instruções sobre como instalar dependências da biblioteca da maneira usual na documentação de um projeto. Isso deve estar dentro dos recursos do usuário médio do Arduino. Se uma versão específica de uma biblioteca for necessária, você o documentará. No entanto, há casos em que eu queria entregar um projeto independente para alguém que não está familiarizado com o uso do IDE do Arduino e foi quando eu usei o sistema descrito acima para todas as bibliotecas de terceiros necessárias.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.