依存関係を管理する方法は?


9

Loggingのような依存関係を含めたいのですが。そのページでそれは言う:

  • zipファイルをダウンロード
  • Loggingフォルダーを「libraries \」に配置します。

これが(Mavenの考え方で)Arduinoプロジェクトの依存関係を管理する方法であるとは信じたくありません。つまり、私のパッケージをチェックアウトするすべての人は、これらの手順をローカルで繰り返す必要があります(またはバージョン管理に「ライブラリ」を含めますか)依存関係管理のベストプラクティスは何ですか?


いいえ、それは誰もが行うことです。
コードゴリラ2017年

ライブラリーとは、ライブラリーのことです。これはMavenではありません。これはArduinoです。マイクロコントローラーの知識がない人でもLEDを点滅させることができるように単純化されています。実際のIDE機能が必要な場合は、実際のIDEを使用してください。
Majenko

1
まあ、私はArduino IDEでGoogleの最初のヒットを使用していますが、これは依存関係の助けにはなりません。LEDを点滅させるためにライブラリは必要ありません。物事は単純でなければならないことに同意します。それが私が依存関係の管理を求めるまさにその理由です。
Markus Malkusch

代わりにC ++ IDEまたはG ++ IDEを探してください。そしてcrosscompiling
ギルハッド2017年

回答:


6

Arduinoは、技術者でない人にとって簡単な方法であることを意図しているため、単純なものにするために、単純な見方からできるだけ多くを隠しています。

単純なプロジェクトの場合、ライブラリをあちこちにコピーしてArduinoの「IDE」を使用するオーバーヘッドを犠牲にして機能します。プログラムを「スケッチ」し、それを操作して非表示にし、C ++であるようにします。などなど。

より複雑なプロジェクト、バージョン管理、良好な環境などを作成する場合は、「単純にArduinoの方法」をそのままにして、より強力で複雑なツールの使用を開始する必要があります。

私は個人的にhttps://github.com/sudar/Arduino-Makefile https://github.com/ladislas/Bare-Arduino-Project を使用し て、GITリポジトリに配置しています。

このようにして、グループ内のプロジェクト間でライブラリを共有したり、ツリーの外部のライブラリへのリンクやgitsサブモジュールを使用したりできます。どちらも、サードパーティから更新されたライブラリをすべてのプロジェクトにアクセスできます。また、古いプロジェクトも利用できます。

私はまだ多くのArduino(setup / loop、digitalReadなど)を使用していますが、途中で「通常の」g ++構造を使用しています。後で、おそらくいくつかのRTOSを使用して、さらにプレーンなC / g ++ / ..コードに分岐しますが、今のところ、私のニーズはそれほど遠くありません。(google "arduino rtos"私は現在https://github.com/greiman/NilRTOS-Arduinoを読んでいます

Arduinoはとにかく「ベストプラクティス」であるように意図されていません。これは、「何も知らなくても、すばやく簡単に何かを行う方法」を意味します。そして、それはうまくいきます。誰もが彼の犬もArduinoから始めることができ、興味があれば、自分でもっと遠くまで行くことができます。


1

プロジェクトを自己完結させたい場合は、ライブラリの依存関係をスケッチフォルダに置くことができます。したがって、ロギングライブラリ依存関係を持つFooスケッチのフォルダ構造は、次のようになります。

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

Foo.inoには、次のようなライブラリを含めます。

#include "src/Logging/Logging.h"

残念ながら、一部のライブラリは誤ったインクルード構文を使用しており、ライブラリがライブラリフォルダーの1つにインストールされている場合は機能しますが、スケッチフォルダーにある場合は機能しません。Loggingライブラリは正しいインクルード構文を使用しますが、ライブラリをスケッチフォルダに配置するために、これを修正する必要がある場合があります。たとえば、Barという名前のライブラリがあり、Bar.cppに次のように表示されているとします。

#include <Bar.h>

スケッチフォルダーにインストールされている場合、Bar.hは標準インクルードパスの1つに配置されないため、Bar.cppを編集してインクルード構文を次のように変更する必要があるため、これは機能しません。

#include "Bar.h"

これにより、ローカルフォルダーでインクルードファイルが検索されます。

このシステムの欠点は、ライブラリの複数のコピーが作成される可能性があるため、各コピーを更新または変更する作業が増えることです。もちろん、各プロジェクトには、他のプロジェクトで使用されているのと同じライブラリに対して行った更新の影響を受けない、既知の動作するバージョンのライブラリを含めることができるので、これも利点になります。

通常は、ライブラリの依存関係を通常の方法でインストールする方法の指示をプロジェクトのドキュメントに追加します。これは、平均的なArduinoユーザーの能力の範囲内である必要があります。ライブラリの特定のバージョンが必要な場合は、それを文書化します。ただし、Arduino IDEの使用に慣れていない人に自己完結型のプロジェクトを引き渡したい場合があり、その場合は、必要なすべてのサードパーティライブラリに上記のシステムを使用しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.