先抛出结论:
windows下vscode无法识别相对路径“./”,只能识别绝对路径。
问题描述如下:
我的项目的路径结构绝对如下:
$ pwd
/f/Robot/mcu_code/robot-mcu-1.4.15.0/sdk
路径下有如下目录结构
$ ls
ALi/ FreeRTOS/ bootloader/ include/ 'sdk Debug.cfg' startup/
ChibiOS/ Makefile build/ libs/ sku/ test/
Drivers/ Makefile.bak images/ safety/ src/ tools/
makefile include定义如下:
########################################
# C include path
########################################
C_INCLUDES = \
-I./\
-Isrc \
-I$(ALI_DIR) \
-I$(CMSIS_DIR)/Include \
-Iinclude \
-Iinclude/configs
在linux server上使用gcc编译正常。
但是在windows环境下使用vscode + gcc编译会报错:
fatal error: libs/eeprom/eeprom_emul.h: No such file or directory
14 | #include "libs/eeprom/eeprom_emul.h"
但在指定的路径下,头文件肯定是存在的。
$ ls ./libs/eeprom/
eeprom_emul.c eeprom_emul_conf.h flash_interface.c
eeprom_emul.h eeprom_emul_types.h flash_interface.h
因gcc在linux环境下编译没问题,肯定不是makefile本身的问题,问题出在vscode或者windows下。
修改makefile,将“./”修改为绝对路径 “/f/Robot/mcu_code/robot-mcu-1.4.15.0/sdk”,编译不会报错。