回答:
AFAIK、それはArduino IDEに組み込まれた癖です。私が考えることができる最良の回避策は、次のようなファイル構造です。
ArduinoWorkspace --- /myproj/ ----+ /src/ --------+ myproj.cpp
+ myproj.ino + sensor.h
+ sensor.cpp
+ (more files)
ここで、myproj.cppは単に#include
main.cppです。これにより、プロジェクトファイルが「クリーン」になり、より一般的な環境でも機能するようになります。
更新:
私はあなたの質問から「メイン」という名前を借用しましたが、反映すると、「メイン」は予約済みの名前です。具体的には、すべてのCまたはC ++プログラムには、最上位のコードとしてmain.cまたはmain.cppがあります。あなたはそれを提供しません。そのため、これをフォルダー名およびプロジェクト名として使用することは避け(ただし、自由に試してみてください)、図を更新しました。必要なのは、同じ名前のプロジェクトフォルダーとその中の.inoファイルです。.inoファイルは
#include <src/anything-else-you-like>
たとえば、最上位のコードファイル。フォルダー内の#include
各ファイルへの.inoが必要な場合があります。src
コンパイラーがそれ自体で理解できない場合は、他のファイルがある場所です。
ところで、トップファイルにmain.cppという名前を使用する場合は、setup()関数とloop()関数(およびそれを使用する場合はシリアルイベント関数)を呼び出す必要があります。「メイン」という名前はそのままにして、デフォルトですべてのArduinoプログラムが取得する同じメインをシステムに提供し、プロジェクトコードを典型的なArduinoの方法で作成することをお勧めします。
多数の.INO
ファイルで構成されるプロジェクトがある場合、IDEはどの「メイン」ファイルであるかをどのようにして認識しているのでしょうか。コンパイル中に、IDEはすべての.INO
ファイルを1つのモノリシックファイルに連結します。これは、「メイン」のものから始めて、最後に他のそれぞれをアルファベット順に追加します。
これは、「メイン」.INO
ファイルに含める必要があるインクルード変数とグローバル変数が、完成したプログラムの最初に来るように行われます。
これを行うために、IDEはどのファイルが「メイン」ファイルであるかを知る必要があります。そして、それが機能する方法は、スケッチが入っているフォルダーと同じ名前が付けられているものを見つけることです。
でUECIDE Iさらに一歩それを取るとにフォルダ全体を回していない化合物、文書、あなたは、もはやフォルダを入力し、開くために持っているので、.INO
スケッチを開くファイルを-実際のフォルダ自体は、全体のスケッチプロジェクトです。繰り返しますが、この種類のフォルダーは.INO
、フォルダーと同じ名前のファイルが中にあると識別されます。
myproj.cpp
、という意味myproj.ino
ですか?どこにあるかわからないからmyproj.cpp
!