本主题提供了使用 C/C++test 测试源码的信息,这些源代码是设计用 Wind River Tornado 编译器编译的,或在 Wind River Tornado IDE 的帮助下编写的。它涵盖了专门支持 Tornado 的 C/C++test 功能,以及为执行 C/C++test 测试而应了解的 Tornado 功能。有关常规 C++test 功能的其他详细信息,请参阅本用户指南的其他部分。
支持概要
独立的 C/C++test 和 C/C++test Eclipse 插件都允许与 Tornado 一起使用 C/C++test,不需要特殊的集成,因为 C/C++test 对 Tornado 的支持不涉及与 Tornado 开发环境的集成。相反,C/C++test 预先配置为支持 Tornado 的编译器集,允许 C/C++test 项目使用这些编译器,并允许完整的 Tornado 项目导入到 C/C++test 工作区中。
支持的 Tornado 版本和编译器
C/C++test 支持 Tornado 2.0 和 2.2。这两个版本都有自己的编译器:
- Tornado-2.0 包括 GNU EGCS 的克隆: egcs-2.90。
- Tornado-2.2 包含两个编译器:GNU GCC clone (gcc-2.96) 和 Wind River's 自己的 DIAB 编译器 (dcc Rel 5.0)。
下表列出了 Tornado 附带的编译器,并详细说明了它们的 C/C++test 系列和配置名称*:
Tornado 版本 | 装载的编译器 | C++test Family | C++test 配置 |
---|---|---|---|
2.0 | egcs-2.90 | Wind River EGCS 2.9 | wregcs_2_9 |
2.2 | gcc-2.96, DIAB-5.0** | Wind River GCC 2.9, Wind River Diab 5.0** | wrgcc_2_9 , diab_5_0 |
*配置名称是 C/C++test 编译器下主要配置目录下子目录的名称,该目录是存储编译器配置数据的位置。默认情况下,它位于 C++test_install_dir/engine/etc/compilers/config_name
。
**或从 5.0.1 开始的更高的 DIAB 版本。
VxWorks 版本装载了:
- Tornado-2.0: VxWorks-5.4 (C++test 支持已弃用)
- Tornado-2.2: VxWorks-5.5 (C++test 支持已弃用)
前提条件
对于 C/C++test 本身,适用标准规则。如果您安装了独立版本的 C/C++test Eclipse 产品,则不需要扩展(已经包含 CDT)。如果有一个 Eclipse 插件,则还必须向 Eclipse 中安装 CDT(C++ 开发工具)扩展。有关详情,请查阅 安装说明 。
要允许使用 Tornado 编译器进行测试,必须在启动 C/C++test 之前设置以下特殊的 Tornado 环境变量 prior to launching C/C++test (我们假设您已正确安装了 Tornado 开发环境,或者已通过其他手段安装了一个或多个 Tornado 编译器):
- WIND_BASE: Tornado 安装目录。例如:C:\Tornado.
- WIND_HOST_TYPE: GNU 工具链上安装了 Tornado 的机器的主机类型。当前仅支持
x86-win32
。 - DIABLIB - DIAB 安装目录。在大多数情况下,它是
%WIND_BASE%\host\diab
。只有当您拥有 Tornado-2.2 并且希望使用 DIAB 编译器进行测试时,才需要使用此变量。 - DIAB_HOST_TYPE - DIAB 工具链上安装了 Tornado 的机器的主机类型。当前,仅支持 WIN32(仅当您想使用 DIAB 编译器进行测试时)。
我们还建议将 Tornado 可执行文件放在 PATH 变量上。例如:
"set PATH=%WIND_BASE%\host\%WIND_HOST_TYPE%\bin;%PATH%"
"set PATH=%DIABLIB%\WIN32\bin;%PATH%"
Tornado 提供的批处理脚本 (%WIND_BASE%\host\%WIND_HOST_TYPE%\bin\torVars.bat)
执行所有推荐的环境初始化。当您从类似 POSIX 的 shell 运行 C/C++test 时,您可以基于 torVars.bat
创建 shell 脚本。
对于静态分析,设置环境就足够了。对于单元测试,还必须存在以下工具(请查阅 执行测试对象):
- Tornado 注册 (wtxregd)
- 目标服务器 (tgtsvr)
- Tornado Shell (windsh)
已知局限性
C/C++test 的局限性:
- 仅基于 Eclipse 的 C/C++test 版本(独立版和插件版)支持Tornado的测试。
- 仅正式支持 Windows 版的 Tornado。
- 不支持 VxWorks 5.4 和 5.5 版本,支持测试更高版本,但在 Wind River Tornado 环境中不支持。
- 在 VxSim 以外的平台上进行测试需要调整处理模式,请参阅 处理方式
- 使用 DIAB 编译器时,捕获异常可能会有问题。
Tornado 工具的局限性:
- Tornado-2.0 的 wregcs-2.9 编译器不支持命名空间和 using 指令(合成的 using namespace std 除外)。
- Wregcs-2.9 预处理器不接受包含空格的包含路径。为避免此问题,请不要在此类位置安装 C/C++test(例如“程序文件”)。
- Tornado 有很多旧的 make-3.74 限制(请查阅 核算 Make 品种),使它无法解析当今的大部分常规 makefile。因此,必须对 C/C++test 运行时库的 makefile(请参阅 了解和构建运行时库)进行特殊调整。当这个 make 放在 PATH 上时,您在构建非 Tornado 项目时可能会遇到问题;因此,当您打算仅使用 Tornado 工具时,最好仅为 Tornado 设置环境。
VxWorks-5.4 & VxWorks-5.5 的局限性:
- 标准库不支持 "long long” 或 "long double” 类型;而且,它们不支持任何 strtoll、strtold routines 或 %lld、%llu 格式的 printf-family routines 字符串。
- VxWorks-5.5 模拟器 (%WIND_BASE%\target\config\simpc\vxWorks.exe; Tornado-2.2)的默认构建在默认模式下没有包含足够的 C/C++ 特性来满足 C/C++test 的 C++ 插装需求。因此,要测试 C++ 代码,您需要构建自己的支持扩展 C++ 的 VxSim 映像(我们建议使用除复数之外的所有 C++ 特性;或者您需要在项目编译标志中添加 DCPPTEST_SPECIAL_STD_EXCEPTIONS_HANDLING_ENABLED=0 定义。此问题不会影响 VxWorks-5.4 (Tornado-2.0)。
处理方式
Tornado 的 GNU 工具链对模拟器(VxSim)和其他平台使用不同的处理方案。对于 VxSim,该方案已调整为与 Microsoft/Windows/Cygwin 兼容,并带有附加在 C 符号前的下划线以及复杂 C++ 处理中的其他差异。
在 C++test 命名法中,对于 C/C++,VxSim 处理方案分别称为 gcc-cygwin/g++2-cygwin,而所有其他平台的名称均为 gcc/g++2。C/C++test 是为 VxSim 做的初步测试,目前无法自动调整其处理方案。因此,您需要针对其他平台手动进行此调整。
有两种方法可以手动调整此处理方案:
- 将 symmatcher.manglingSchema 高级项目选项(在 C/C++test 项目属性面板的 其他设置> 高级选项 区域) 设置为 gcc(仅 C 项目)或 g++2(仅 C++ 项目)。此解决方案不适用于混合的 C/C++ 项目。
- 通过复制 wregcs-2.9/wrgcc-2.9 配置,调整其方案并为项目选择它来创建自定义编译器。
这是有关如何使用上面列出的第二种方法的详细信息:
- 选择 文件> 新建> 其他。
- 选择 C++test> 自定义编译器,然后单击 下一步。
- 选择 添加自定义编译器,然后单击 下一步。
- 如下指定自定义编译器:
- 为编译器输入一个有意义的名称。
- 在 编译器系列下选择 Wind River EGCS 2.9 或 Wind River GCC 2.9 。
- 提供正确的编译器/链接器可执行文件。
- 对编译器的标识符进行任何所需的调整(例如,如果要共享配置),然后单击 下一步。
- 在最后 3 个编辑框中,标记生成编译器配置文件的位置,然后单击 完成。
- 使用外部文件系统导航器,打开标记的位置。
- 编辑 c.psrc 文件,并附加
symmatcher.manglingSchema gcc
- 编辑 cpp.psrc 文件并附加
symmatcher.manglingSchema g++2
- 保存文件。
- 要提示 C/C++test 进行更改,请重新启动它。
- 另外,如果您调整了 C++test 偏好设置的 配置> 自定义目录> 自定义编译器 的位置,则可以将其禁用,单击 应用,重新启用它,然后单击 确定。
- 在 C/C++test 项目属性面板的 构建设置> 编译器设置> 系列 区域中,为任何项目选择新的编译器配置。