HighTec 工程配置详解
编译配置
构建配置管理器
管理器内,可以创建各种不同用途的配置项。例如用于生产工程的 ROM 配置,用于调试工程的 Debug 配置。对于每个配置,所设置的工程属性是单独分开的,互相之间没有影响。
打开构建配置管理器
选中工程后,右键选择 Build Configurations --> Mange 即可打开管理器。
 ![]](https://img-blog.csdnimg.cn/9518bb5df79b400fa3389030878b4de3.png)
 在管理器内,可以看到对于本工程创建的所有的配置文件,左键可以选中配置项。下方四个菜单依次是:
Set Active 设置为当前活动的配置项
New 创建一个新的配置项
Delete 删除当前选中的配置项
Rename 重命名当前选中的配置项
同一时刻,必须有且只有一个配置项是活动的。
 
创建一个新的构建配置
点击  New  打开构建工具,Name 和 Description 可以由开发者进行编写,下方有一个设置拷贝的来源。
 
 来源分为:
当前工程存在的配置:
 
 当前工作空间存在的配置:
 
 使用预定义配置:
 
编译属性
编译步骤
编译步骤分为编译前和编译后,编译前后可以使用默认的库来添加编译步骤。

编译前可以输出编译器的版本到 build_version.txt 。

编译后可以生成 hex/srec 文件,或者进行其他文件的转换或者对输出文件进行分析。
 
编译环境变量
环境变量可以看做是在操作系统(一般是Windows)的环境变量之后,附加的变量,在编译过程中创建比较简单的makefile文件。
 
编译日志
编译日志是需要根据工程的实际情况,来选择是否开启编译日志输出。且输出的文件位置可以进行设置。

编译配置
下面到了重点介绍的,关于编译配置的说明。同时需要说明的是 tricore 工具链的命令行最大字符数为 8K 字节,超过之后,会导致编译文件异常(不一定会提示编译失败)。
编译设置分为 工具链设置, link配置 , 编译步骤 , 编译结果文件格式 。
工具链设置
Global options 全局配置,可以配置 CPU TYPE。 gcov 是用来分析静态内存时可以选择使用,但是需要配合第三方软件进行使用。
TriCore C Compiler 可以看到编译命令输出的编译过程。 其中所有配置项目都是在子菜单中可以进行配置。

Tricore PCP Compiler TriCore Assembler TriCore GTM Assembler TriCore C Linker 这几个也可以点击看命令行输出的编译过程,分别为PCP编译器,汇编文件编译器,GTM汇编文件编译器,链接器。
TriCore C Compiler
General
配置头文件搜索路径

-fno-short-enums : 不仅仅分配给枚举量使用的数据类型(short)
-funsigned-bitfields 位域使用无符号类型

Optimization 优化
分为5个等级
None : 无优化
Normal : 默认优化
Speed : 速度优先
Size : 尺寸优先
Balanced : 平衡速度与尺寸

Debugging 调试
调试等级分为4个
None 无调试信息
Minimal 最小调试信息
Default 默认调试信息
Maximum 最大调试信息
建议在调试阶段使用 -g3 添加最大的调试信息,以方便进行调试和解决错误。在生成Lib或者elf时,可以选择None模式,减少生成调试信息的过程,减少编译时间。且Lib也可以减小体积。
 
Warnings 警告
对编译过程所需要产生的警告信息进行设置,可以看到类型还是比较多。可以根据实际项目进行调整。
-W 更多的警告
-Wall 所有的警告信息
-Wdiv-by-zero 如果有除零操作
-Wcast-align 对数据指针转换时,增加对内存对齐的检查
-Wignored-qualifiers 如果函数返回类型超出范围
-Wformat 如果有个事函数使用错误
-Wnested-externs 如果函数内有外部引用函数
-Wdoble-promotion 从float到double的隐式转换
-Werror=fouble-promotion 从float到double的隐式转换变为错误
 
Output 输出

Symbols 符号
C语言中可以使用 #define SYSBOL 0 来产生一个宏定义。但是需要使用时,需要包含这个头文件。同样,在工程编译过程中,也可以使用 -Dsysbol 来产生一个全局的宏定义。
-D 产生的宏定义
-U 失效的宏定义
![[)]](https://img-blog.csdnimg.cn/75f9be38cfaa4f0a8d18b7eba4b56ca8.png)

Language dependent 语言标准
分成4个,对于每个标准之间的区别,则需要自行查找。

Code Generation 代码生成
对可能使用的对象进行解释
-finline-limit= 对于行函数生成的最大字节数
-finline-is-always-inline 对所有的行函数增加 __always_inline__
-fdata-sections 对所有的数据段进行拆开生成,配合 -gc-sections 可以对不使用的变量链接时进行删除。应该只对 .data 有效
-ffunction-sections 对所有的函数段进行拆开生成,配合 -gc-sections 可以对不使用的函数在链接时进行删除,对所有函数有效

TriCore C Linker
General 通用配置
-nocrt0 不包含启动文件 crt0.o 文件。根据实际项目需要进行选择
-nostdlib 不使用标准库。根据实际项目需要进行选择
-nostartfiles 链接时,不使用系统启动文件
-T 选择链接文件

Optimization 优化
–gc-sections 删除不使用的段
 –mem-holes 当前输出段(内存段的最后一个输出)已经满时,自动将输入段放入下一个输出段
 
Libraries 库文件
-L 库文件搜索路径,可以使用绝对路径和相对路径
-l 库文件名称。 不包括lib前缀和.a后缀 例如实际库文件是 libc.a 则此处需要填写 c 。

Output 输出文件
-Map= 输出map文件名称
 
link设置
选择后,可以将需要连接的目标文件放置在 iROM.object 文件内,以减少命令行的长度。

选择前后的连接命令对比

 
编译步骤
编译步骤和前面介绍的编译前后步骤一样,但是这里就没有提供库来使用,只能由开发者进行手动填写。还没有研究两个编译的前后顺序。

编译结果文件格式
结果文件可以分为两种类型,可执行文件(.elf)和静态库文件(.a),其中还可以设置名称和前缀、后缀。

name 可以使用宏名称 ${ProjName}生成和工程名称一样的文件。
![[附源码]计算机毕业设计springboot咖啡销售平台](https://img-blog.csdnimg.cn/d8b39b105c684714a1dcfd6e738cb930.png)






![[附源码]计算机毕业设计springboot拉勾教育课程管理系统](https://img-blog.csdnimg.cn/2979b3c094b9420db4d9f939efb3aa0d.png)




![[附源码]Python计算机毕业设计Django的文成考研培训管理系统](https://img-blog.csdnimg.cn/a91adbc05a72486d9d2abf220033f58c.png)



![[附源码]Python计算机毕业设计Django的玉石交易系统](https://img-blog.csdnimg.cn/2c117505bb3c439f8a6ecdfd6234c089.png)


![[附源码]计算机毕业设计SpringBoot计算机相关专业考研资料管理系统](https://img-blog.csdnimg.cn/ece30d73d864465ca71f7618c4542c2c.png)