本主题提供了使用 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 FamilyC++test 配置
2.0egcs-2.90Wind River EGCS 2.9wregcs_2_9
2.2gcc-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 配置,调整其方案并为项目选择它来创建自定义编译器。

这是有关如何使用上面列出的第二种方法的详细信息:

  1. 选择 文件> 新建> 其他
  2. 选择 C++test> 自定义编译器,然后单击 下一步。
  3. 选择 添加自定义编译器,然后单击 下一步
  4. 如下指定自定义编译器:
    1. 为编译器输入一个有意义的名称。
    2. 编译器系列下选择 Wind River EGCS 2.9Wind River GCC 2.9
    3. 提供正确的编译器/链接器可执行文件。
  5. 对编译器的标识符进行任何所需的调整(例如,如果要共享配置),然后单击 下一步。
  6. 在最后 3 个编辑框中,标记生成编译器配置文件的位置,然后单击 完成。
  7. 使用外部文件系统导航器,打开标记的位置。
  8. 编辑 c.psrc 文件,并附加 symmatcher.manglingSchema gcc
  9. 编辑 cpp.psrc 文件并附加 symmatcher.manglingSchema g++2
  10. 保存文件。
  11. 要提示 C/C++test 进行更改,请重新启动它。
    • 另外,如果您调整了 C++test 偏好设置的 配置> 自定义目录> 自定义编译器  的位置,则可以将其禁用,单击 应用,重新启用它,然后单击 确定
  12. 在 C/C++test 项目属性面板的 构建设置> 编译器设置> 系列 区域中,为任何项目选择新的编译器配置。
  • No labels