有时需要在多个工程中使用共享资源。比如代码、链接文件(.ld)或链接库。使用共享资源可以降低维护工作量,避免版本不一致的问题。
1. 使用共享文件夹中的代码
在工程中使用共享文件夹中的代码。 比如有一个代码文件夹SDK,与项目工程在同一级目录,共享使用。
1. 1 在工程中添加文件夹
右键点击工程名,在弹出菜单中点击
New –> Folder,
弹出对话框,点击:Advanceed –> Link to alternate location。
添写文件夹路径,可以使用绝对路径,也可以使用相对路径。使用相对路径便于维护。
在下面输入框中添写:
${PARENT-1-PROJECT_LOC}/SDK
点击Finish按钮。
解析:
美元符号 $ 加上大括号{}表示变量;
PARENT-1-PROJECT_LOC 表示目标文件夹在工程的上一级目录。数字1代表上1级目录,可以根据需求修改。
上2级目录为PARENT-2-PROJECT_LOC。PROJECT_LOC表示工程目录。
1.2 添加到编译配置
右键点击新添加的文件夹,在弹出菜单中点击
Build path -> Add to -> Debug或Release
这时文件夹的图标会自动去掉斜杠。
1.3 添加编译器搜索路径
右键点击工程名,在弹出菜单中选择Properties
在左侧树状框中点击:
C/C++ Build -> Settings,点击 Tool Settings 选项卡。
跟据不同编译器版本,在中间树状框中点击
Diab C Compiler -> Preprocessor 或 Standard S32DS C Compiler -> Includes
在Include paths (-l)框中添加文件夹路径,如:
"${workspace_loc:/${ProjName}/SDK}"
解析:
因为已经把SDK文件夹添加到工程中,可以使用本工程的路径。${ProjName} 代表工程名。
2. 使用共享链接文件
链接文件(Linker File)是用于指导链接器如何将编译后的代码和数据段分配到目标芯片的Flash和SRAM中的脚本文件,通常以 .ld 为扩展名 。
右键点击工程名,在弹出菜单中选择Properties
在左侧树状框中点击:
C/C++ Build -> Settings,
点击 Tool Settings 选项卡,
点击Standard S32DS C Linker -> General
在右侧 Script files 框中添加链接文件。
使用相对路径,便于维护。如:
"${ProjDirPath}/../link/56xx_flash.ld"
解析:
${ProjDirPath} 代表工程路径,可以使用双点 .. 代表上级目录。
3. 使用共享库文件
见参考2。
4. 使用共享生成文件
生成文件包括.map,.elf等文件。
4.1 把生成文件放在共享文件夹
右键点击工程名,在弹出菜单中选择Properties
在左侧树状框中点击:
C/C++ Build -> Settings,点击 Build Artifact 选项卡。
在 Artifact name 输入框填写生成文件的名称(不包括后缀)。
在 Output prefix 输入框填写共享文件夹路径。注意:该文件夹必须存在,以 / 结尾。
4.2 把共享文件夹映射到工程
参照1.1节。把共享文件夹映射到工程后,方便查看编译结果。
5. 使用共享编译器
需要添加共享编译器文件夹的路径。
右键点击工程名,在弹出菜单中选择Properties
在左侧树状框中点击:
C/C++ Build -> Environment,
在 Environment variables to set 框中,修改PATH变量。把编译器文件夹的路径添加到PATH变量中。
参考:
1. S32 Design Studio 修改代码相对路径的方法
2. S32 Design Studio(S32DS)引用库文件
3. 使用S32 Design Studio(S32DS)常见问题