Answers:
AFAIK,这是Arduino IDE中内置的一个怪癖。我能想到的最佳解决方法是文件结构,例如:
ArduinoWorkspace --- /myproj/ ----+ /src/ --------+ myproj.cpp
+ myproj.ino + sensor.h
+ sensor.cpp
+ (more files)
,其中myproj.cpp只是#include
main.cpp。这应该使您的项目文件保持“干净”,以便它们也可以在更典型的环境中工作。
更新:
我从您的问题中借用了“ main”这个名称,但是经过反思,“ main”是一个保留名称,特别是,每个C或C ++程序都有main.c或main.cpp作为其顶层代码,如果您不提供任何一个。因此,我避免将其用作文件夹和项目名称(但可以尝试使用它),并且已经更新了该图。您需要做的是一个项目文件夹和其中的一个.ino文件,其名称相同。.ino文件可以
#include <src/anything-else-you-like>
,例如您的顶级代码文件,从而提取其他所有内容。您可能需要将.ino #include
文件src
夹中的每个文件,如果编译器自己没有找到它,那就是其他文件所在的位置。
顺便说一句,如果您确实在顶层文件中使用了名称main.cpp,它将必须调用setup()和loop()函数(如果使用,则调用串行事件函数)。最好保留名称“ main”,让系统提供每个Arduino程序默认使用的相同主程序,并以典型的Arduino方式编写项目代码-从setup()和loop()开始。
当您的项目由多个.INO
文件组成时,IDE应该如何知道哪个是“主要”文件?在编译期间,IDE将所有.INO
文件连接在一起,成为一个整体文件。它从“主要”开始,然后将其他每个按字母顺序附加到末尾。
这样做是为了使应该在“主” .INO
文件中放入的include和Global变量位于已完成程序的开头。
为此,IDE必须知道哪个文件是“主要”文件。解决该问题的方法是找到一个与草图所在的文件夹相同的文件夹。
在UECIDE中,我更进一步,将整个文件夹转换为复合文档,因此您不必再输入文件夹并打开.INO
文件即可打开草图-实际的文件夹本身就是整个草图项目。再次将这种文件夹标识为其中包含.INO
与该文件夹相同名称的文件。
myproj.cpp
你的意思是myproj.ino
?因为我看不到哪里myproj.cpp
!