不使用IDE时如何设置头文件包含路径以简化操作?
无需修改#include语句的头文件路径配置方案
1. 给编译器添加头文件搜索路径
arm-none-eabi-gcc用-I参数指定额外的头文件搜索目录,只要在Makefile的编译选项里加上这个参数,就能让编译器自动去对应目录找头文件,不用改原有的#include语句。
针对你的项目结构,把drivers/Inc目录加入搜索路径即可,Makefile里可以这么配置:
# 定义头文件搜索路径 INCLUDES = -I./drivers/Inc # 编译器及基础编译选项(根据你的STM32型号补充CPU架构等参数) CC = arm-none-eabi-gcc CFLAGS = -mcpu=cortex-m4 -mthumb $(INCLUDES) # 源文件列表 SRCS = main.c drivers/Src/driver1.c drivers/Src/driver2.c # 生成可执行文件的规则 main.elf: $(SRCS) $(CC) $(CFLAGS) $(SRCS) -o $@
2. 简化源文件路径的小技巧
如果不想每次写drivers/Src/前缀,可以用Makefile的vpath指令指定源文件的搜索目录,这样源文件列表能更简洁:
# 指定.c文件的搜索目录 vpath %.c drivers/Src # 源文件列表简化成 SRCS = main.c driver1.c driver2.c
编译时编译器会自动去drivers/Src目录找对应的源文件。
3. 验证配置
设置完成后,你原来的#include "driver1.h"这类语句完全不用修改,编译器会优先在当前目录查找头文件,找不到就去-I指定的drivers/Inc目录里搜索,和你在STM32CubeIDE里指定头文件路径的效果一致。
内容的提问来源于stack exchange,提问作者Hackem2bits
相关产品推荐
相关产品推荐

