dede游戏网站模板,wordpress蜜蜂,通信管理局网站 备案,友の 连接最近在MCU on Eclipse网站上看到Erich Styger所写的一篇有关在Eclipse中使用Makefile创建项目的文章#xff0c;文章讲解清晰明了非常不错#xff0c;所以呢没人将其翻译过来供各位同仁参考。当然限于个人水平#xff0c;有不当之处恳请指正。原文网址#xff1a;https://m…最近在MCU on Eclipse网站上看到Erich Styger所写的一篇有关在Eclipse中使用Makefile创建项目的文章文章讲解清晰明了非常不错所以呢没人将其翻译过来供各位同仁参考。当然限于个人水平有不当之处恳请指正。原文网址https://mcuoneclipse.com/2017/07/22/tutorial-makefile-projects-with-eclipse/ 像Eclipse这样的IDE的好处是它使得处理项目的工作变得非常容易。因为它不但可以生成文件而且可以获取并自动地管理Makefile文件。但有时这可能不是我想要的因为我需要更大的灵活性和控制或者我想要为我的持续集成和自动化测试系统使用相同的制作文件。在这种情况下就需要自己编写Makefile文件。
有一件事不排除其他内容本文介绍如何使用Eclipse中的makefiles与Eclipse中托管构建系统相似的舒适度但是具有无限制的make files 概要
Eclipse附带一个内置的构建系统managed make我可以配置编译器链接器设置Eclipse会处理其余的事情。在本教程中我将介绍如何使用Eclipse手动创建和使用精心制作的make files。所推荐的make files和模板可以方便地使用make来控制构建系统。所提出的方法要求添加到项目中的每个新的源文件需要扩展make文件而是对所有包含的头文件的自动生成依赖文件的make文件进行扩展。
使用make文件的好处是
比Eclipse .cproject文件和设置更容易在版本控制系统中存储和跟踪完全控制构建和制作过程作为构建过程的一部分与其他步骤例如使用版本控制系统或自动化测试系统相比这是微不足道的可以在IDE和外部使用相同的构建make例如在自动构建系统上并且编写make文件也很有趣
make文件方法需要了解构建过程为此了解什么与管理make一起使用是有帮助的所以我可以将其用作基础或灵感。
前提条件
要在Eclipse中使用make文件我需要以下内容 Eclipse IDE。我正在使用恩智浦MCUXpresso IDE v10.0.2基于Neon但任何其他Eclipse发行版也可以这样做。 使用make实用程序安装GNU工具链。通常这里附带了一个捆绑的Eclipse IDE或者您可以使用DIY工具链。 您的目标设备的编译器和链接器设置。使用现有示例项目中的选项。 启动和链接器文件。再次您可以借用现有的示例项目。 应用源文件。我建议先从“空”main函数开始。
获取必要的文件和选项的一个好方法是查看一个通常使用“manged make”的示例项目。
我把这个项目的来源放在了GitHub上。在本文末尾的“链接”部分检查GitHub项目的链接。
来自Eclipse受托管Make
使用受管制作系统Eclipse会检测项目中存在的文件例如* .c并自动生成make文件 生成器设置
这样生成make文件 生成Make文件
通过构建工具集成我有一个GUI可以设置工具的选项 管理构建工具设置
所有这些信息都将添加到make文件中如果我做一个构建它调用make实用程序或构建器使用所有必要的命令行构建它。检查控制台视图输出可以看到它有什么作用 控制台视图输出
有了这个我应该有一切做一个make文件项目。
创建Make File项目
我在Eclipse中创建一个新的make文件项目菜单File New Project 新项目
与Eclipse中的许多事情一样有多种方法来做事情。
如果我有现有的代码我可以使用Makefile项目与现有代码。然后我可以给一个名字和现有的代码位置文件夹。然后它将在该代码位置文件夹内创建项目并将所有源文件添加到项目中 新建带已有代码的Make文件项目
通用的方法是生成C或C 项目 新的C/C项目
然后给项目一个名称并选择一个空的make文件项目与支持的工具链 创建空的Makefile项目
然后按“下一步”然后根据所选的工具链进行剩余的对话框。这将创建一个如下的空项目 空Makefile项目
应用文件
要编辑一些东西添加一个新的源文件 添加新的源文件
将其命名为main.c或任何您喜欢的 新的main.c文件
然后添加一个main例程与一些代码例如
static int i; void main(void) { for(;;) { i; } /* do not leave main() */
} Makefile文件
接下来使用项目文件夹中的上下文菜单“ 新建”“文件 ” 新文件
在项目中创建一个名为“makefile”的文件 创建Make File
这会添加一个空的make文件。
CMSIS系统文件和启动
下一步很大程度上取决于所使用的设备。我在这个例子中使用恩智浦FRDM-KL25Z板。为了结构化我创建了源的目录。特殊的“ debug ”文件夹将用于放置对象和可执行文件。 展开的项目结构
Make文件语法
下一步是实现make文件内容。一般的make文件如下所示
allhello.axf 清洁 rm main.o hello.axf hello.axfmain.o gcc -g -o hello main.o main.o gcc -c -g main.c
make文件中的每个条目都具有以下语法
target依赖关系列表
tab要执行的命令
请注意每个命令前面都需要一个TAB字符
有两个名为特殊目标所有的清洁。clean用于删除所有临时文件all用于构建应用程序。
Makefile的内容
在makefile中我定义了用于删除文件编译器和链接器的变量
############################
删除文件的命令
RM rm -rf ############################
编译器
CC arm-none-eabi-gcc ############################
链接器
LL arm-none-eabi-gcc
然后我为最终的可执行文件定义一个宏
############################
二进制/可以构建
EXE \ ./debug/MyMakeProject.axf
接下来是所有目标文件的列表。因为目标文件将被放置在debug文件夹中这是名称的一部分 ############################
目标文件列表
OBJS \ ./debug/main.o \ ./debug/startup_MKL25Z4.o \ ./debug/system_MKL25Z4.o
接下来的事情真的很酷 如果main.c包含头文件main.h我将不得不写一个规则
main.omain.c main.h $CC-c main.c -o main.o
但这是非常痛苦的我必须为每个文件编写规则并且需要跟踪头文件。相反我让编译器稍后再创建依赖文件扩展名为.d用于依赖。依赖文件main.d看起来像这样
debug / main.o debug / main.dsource / main.c source / main.h source/ main.h
如果不是“干净”目标我将文件作为附加规则文件包含在内 ############################
包含生成的依赖文件只有不干净的目标
ifneq$MAKECMDGOALSclean
ifneq$strip $C_DEPS
- 包含$C_DEPS
endif
endif
以下是我以后可以使用的编译器选项集 ############################
编译器选项
CC_OPTIONS -c -std gnu99 -O0 -g-功能部分-fdata-sections -fno-builtin -mcpu cortex-m0plus -mthumb -DCPU_MKL25Z128VLK4 -D__USE_CMSIS -I“CMSIS”-I“source”
类似的链接器的选项
############################
链接器选项
LL_OPTIONS -nostdlib -Xlinker -Map “debug / MyMakeProject.map”-Xlinker --gc-sections -Xlinker -print-memory-usage -mcpu cortex-m0plus -mthumb -T linksfile.ld -o $EXE
接下来的目标是构建应用程序
############################
mainalltarget
all$EXE echo“***finished building***”
跟着目标做一个“干净”
############################
Clean target
clean: -$(RM) $(EXECUTABLES) $(OBJS) $(EXE) -$(RM) ./debug/*.map -echo
以下是将应用程序与所有对象文件链接的规则
############################
# Rule to link the executable
$(EXE): $(OBJS) $(USER_OBJS) linkerfile.ld echo Building target: $ echo Invoking: Linker arm-none-eabi-gcc $(LL_OPTIONS) $(OBJS) $(LIBS) echo Finished building target: $ echo
接下来我指定构建对象文件的规则。我必须为每个要使用的子文件夹指定一个规则
############################
# Rule to build the files in the source folder
./debug/%.o: ./source/%.c echo Building file: $ $(CC) $(CC_OPTIONS) -MMD -MP -MF$(:%.o%.d) -MT$(:%.o%.o) -MT$(:%.o%.d) -o $ $ echo Finished building: $ echo ############################
# Rule to build the files in the CMSIS folder
./debug/%.o: ./CMSIS/%.c echo Building file: $ $(CC) $(CC_OPTIONS) -MMD -MP -MF$(:%.o%.d) -MT$(:%.o%.o) -MT$(:%.o%.d) -o $ $ echo Finished building: $ echo
选项-MMD -MP -MF“$。o 。d”
-MT“$。o 。o” 为每个编译的源文件生成依赖项.d文件。 制作目标
要构建项目可以使用Eclipse中通常的“make / build”和“clean”菜单/命令。但还有一个很酷的方式构建目标
为此打开构建目标视图菜单Windows显示视图其他 Make创建目标
在该视图中选择项目然后单击“新建目标”按钮 新建目标
创建“干净”目标 清洁目标
这将为项目添加一个“构建目标”组。使用上下文菜单为“全部”添加新目标 创建新的目标
这样我可以双击或使用上下文菜单在makefile中执行目标 在Eclipse项目浏览器中创建目标
综述
在Eclipse中进行托管的制作和构建是一个很好的功能它简单易用并且可能是与IDE类似的98的用例的正确的东西。但是如果我想使用Eclipse的普通make文件这并不困难。使用提出的make文件模板如果将新的源添加到项目中我必须扩展文件列表。否则一切都得到照顾。编写文件需要学习阶段但这可能是一个很好的投入。
接下来就可以快乐的Make中了。 相关链接
本文在GitHub上的项目和文件https//github.com/ErichStyger/mcuoneclipse/tree/master/Examples/MCUXpresso/FRDM-KL25Z/MyMakeProject制作文件教程https//mcuoneclipse.com/2012/02/13/make-my-make-with-eclipse-and-mcu10/GNU Makehttps : //www.gnu.org/software/make/
欢迎关注