なぜ `.ino`ファイルは同じ名前のフォルダーにある必要があるのですか?


12

非常に複雑なプロジェクトを整理しようとしています。実際のコードはすべてsrc(source)という名前のフォルダーに入れたいのですが、メイン.inoファイルはそのままにしておきますmain.ino(これもにありますsrc)。次に、コードを開こうとすると、IDEはというmain.ino名前のフォルダーにある必要があると言いますmain

どうしてこれなの?

私はエラーメッセージを完全に理解していますが、なぜArduinoでのファイルの命名がそうでなければならないのですか。それを変える方法はありますか?

回答:


6

AFAIK、それはArduino IDEに組み込まれた癖です。私が考えることができる最良の回避策は、次のようなファイル構造です。

ArduinoWorkspace --- /myproj/ ----+ /src/ --------+ myproj.cpp
                                  + myproj.ino    + sensor.h
                                                  + sensor.cpp
                                                  + (more files)

ここで、myproj.cppは単に#includemain.cppです。これにより、プロジェクトファイルが「クリーン」になり、より一般的な環境でも機能するようになります。

更新:

私はあなたの質問から「メイン」という名前を借用しましたが、反映すると、「メイン」は予約済みの名前です。具体的には、すべてのCまたはC ++プログラムには、最上位のコードとしてmain.cまたはmain.cppがあります。あなたはそれを提供しません。そのため、これをフォルダー名およびプロジェクト名として使用することは避け(ただし、自由に試してみてください)、図を更新しました。必要なのは、同じ名前のプロジェクトフォルダーとその中の.inoファイルです。.inoファイルは

#include <src/anything-else-you-like>

たとえば、最上位のコードファイル。フォルダー内の#include各ファイルへの.inoが必要な場合があります。srcコンパイラーがそれ自体で理解できない場合は、他のファイルがある場所です。

ところで、トップファイルにmain.cppという名前を使用する場合は、setup()関数とloop()関数(およびそれを使用する場合はシリアルイベント関数)を呼び出す必要があります。「メイン」という名前はそのままにして、デフォルトですべてのArduinoプログラムが取得する同じメインをシステムに提供し、プロジェクトコードを典型的なArduinoの方法で作成することをお勧めします。


myproj.cpp、という意味myproj.inoですか?どこにあるかわからないからmyproj.cpp
Dat Ha

わかりました、少し問題です。これを行うと、sensor.cppに含まれているいくつかの基本的なArduino関数(map()やanalogRead()など)がコンパイラによって認識されません。
Dat Ha

または、Windowsボックスで作業している場合は、junctionコマンドを使用して、正しい名前のディレクトリをより適切な名前のディレクトリに「リンク」します。または、Linuxボックスで作業している場合は、シンボリックリンクコマンドを使用して同じことを行います。
st2000

(私の更新を参照してください-.inoファイルには他の各ファイルを含める必要がある場合があります)。
JRobert

3

多数の.INOファイルで構成されるプロジェクトがある場合、IDEはどの「メイン」ファイルであるかをどのようにして認識しているのでしょうか。コンパイル中に、IDEはすべての.INOファイルを1つのモノリシックファイルに連結します。これは、「メイン」のものから始めて、最後に他のそれぞれをアルファベット順に追加します。

これは、「メイン」.INOファイルに含める必要があるインクルード変数とグローバル変数が、完成したプログラムの最初に来るように行われます。

これを行うために、IDEはどのファイルが「メイン」ファイルであるかを知る必要があります。そして、それが機能する方法は、スケッチが入っているフォルダーと同じ名前が付けられているものを見つけることです。

UECIDE Iさらに一歩それを取るとにフォルダ全体を回していない化合物、文書、あなたは、もはやフォルダを入力し、開くために持っているので、.INOスケッチを開くファイルを-実際のフォルダ自体は、全体のスケッチプロジェクトです。繰り返しますが、この種類のフォルダーは.INO、フォルダーと同じ名前のファイルが中にあると識別されます。

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