再次点击verify按钮,此时则出现以下信息:
Alternatives for Arduino.h: []E:myAppsoftware_dataarduinobuild_outputsketchsketch_jun27a.ino.cpp:1:10: fatal error: Arduino.h: No such file or directory
ResolveLibrary(Arduino.h) #include
-> candidates: [] ^~~~~~~~~~~
compilation terminated.
exit status 1
Error compiling for board test board 2, Advanced.
以上信息输出显示找不到Arduino.h,这是因为我们还未完成硬件开发板支持包的移植。
也可以通过命令行复制Arduino IDE的控制台输出的命令,调用gcc_arm_none_eabi编译器两次,第一次的-o “nul”表示为无实际输出,第二次则输出到ctags_target_for_gcc_minus_e.cpp.命令行参数中除去我们在platform.txt中定义的{compiler.cpp.flags}选项外,额外还包括-w -x c++ -E -CC,这个选项在使用arduino-builder -dump-prefs的命令行输出中的preproc.macros.flags,也就是说先调用编译器的预处理过程,然后再调用gcc进行编译。由于此时我们没有定义Arduino.h,因此预处理不通过,提示找不到改文件。
1.1.2 添加Arduino.h
这里简单的创建一个空白的Arduino.h,并添加到arduino-1.8.19hardwarewchriscvcoresarduino目录下,同时需要在platform.txt的recipe.cpp.o.pattern后面添加一个”{includes}”,以确保Arduino-builder自动将arduino-1.8.2hardwarevendor_testarch_testcoresarduino目录添加到编译器的头文件搜索路径中。
recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} {compiler.cpp.extra_flags} {includes} "{source_file}" -o "{object_file}"
此时再次点击Verify,在Arduino IDE的控制台输出看到如下信息:
Linking everything together...
recipe.c.combine.pattern pattern is missing
Error compiling for board test board 2, Advanced.
因为没有配置创建过程中的链接信息所以提示缺失combine方法。下一步将添加链接信息。
同时在arduino-build-xxx目录下的prerpoc子目录下看到经过预处理后的cpp文件,ctags_target_for_gcc_minus_e.cpp,打开该cpp文件可以看到如下cpp代码:
#include
#line 1 "E:\myApps_Backup\MCU\WCH\myApp\Arduino\sketchbook\sketch_jun27a\sketch_jun27a.ino"
#line 1 "E:\myApps_Backup\MCU\WCH\myApp\Arduino\sketchbook\sketch_jun27a\sketch_jun27a.ino"
void setup();
#line 10 "E:\myApps_Backup\MCU\WCH\myApp\Arduino\sketchbook\sketch_jun27a\sketch_jun27a.ino"
void loop();
#line 1 "E:\myApps_Backup\MCU\WCH\myApp\Arduino\sketchbook\sketch_jun27a\sketch_jun27a.ino"
void setup(){
// put your setup code here, to run once:
static int i = 0;
static int sum = 0; for(i = 0; i < 100; i++){
sum += i; } }
void loop(){
// put your main code here, to run repeatedly: