Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from space CPPTDESKDEV and version 2020.2

此章节:

Table of Contents
maxLevel1

说明

要使用现有构建系统自动创建项目,C/C++test 需要有关代码库生成过程的信息。为了向 C/C++test 提供必要的信息,您可以运行 C/C++test 附带的cpptestscancpptesttrace实用程序来创建一个 C/C++test 项目,通常使用诸如 GNU make、CMake 或 QMake 之类的构建工具来构建该项目。该实用程序输出一个包含 C/C++test 所需的构建信息的构建数据文件(有关详细信息,请参见关于构建数据文件(.bdf))。或者,您可以先构建一个项目,然后使用实用程序收集的信息进行手动配置。

如果使用 Cmake,还可以直接在 Cmake 构建文件中定义 C/C++test 项目。这使您可以在使用 Cmake 进行构建时自动生成 C/C++test 项目,而无需运行cpptestscancpptesttrace。有关详细信息,请参见 将 C/C++test 集成到 CMake Build 中。

您还可以使用 C/C++test 项目创建向导导入 CMake JSON 构建定义文件。有关此项目创建方法的更多信息,请参见Importing Project Using Build Data File with the GUI Wizard

Anchor
bdf
bdf
关于构建数据文件 (.bdf)

构建信息(例如工作目录,用于编译的命令行选项以及原始构建的链接过程)存储在调用构建数据文件的文件中。以下示例是来自构建数据文件的片段:

Code Block
------- cpptestscan v. 9.4.x.x -------
working_dir=/home/place/project/hypnos/pscom
project_name=pscom
arg=g++
arg=-c
arg=src/io/Path.cc
arg=-Iinclude
arg=-I.
arg=-o
arg=/home/place/project/hypnos/product/pscom/shared/io/Path.o

构建数据文件可用作有关项目源文件、编译器可执行文件、编译器选项、链接器可执行文件以及用于构建项目的选项的信息源。使用构建数据文件创建项目的三种方法:

  • 手动将“使用构建数据文件中的选项''设置为项目的选项源,然后选择适当的构建数据文件(请参见从 GUI 创建项目)。
  • 使用 GUI 自动导入项目。请参见通过 GUI 向导使用“构建数据文件”导入项目
  • 使用命令行自动导入项目。请参见 从命令行导入一个项目

    Note
    title注意

    如果满足以下条件,还可以将必需的环境变量存储在构建数据文件中:

    • 您的构建系统将设置所需的环境变量,以使编译器/链接器正常工作
    • 当运行 C++tests 时,这些变量在环境中不可用。

    请参见下面的'--cpptestscanEnvInOutput' 选项的说明。

使用 cpptestscancpptesttrace 创建构建数据文件
Anchor
using_cpp
using_cpp

Cpptestscancpptesttrace 可执行文件位于 ++test 装目录中。他们从现有代码库的构建过程中收集信息,使用该信息生成构建数据文件,并将有关每次执行的信息附加到文件中。

cpptestscan 实用程序在正常构建期间用作编译器和/或链接器的包装。要在现有的构建中使用cpptestscan,需要使用cpptestscan作为现有构建的编译器/链接器可执行文件的前缀来构建代码库。这可以通过两种方式完成:

  • 修改构建命令行以将 cpptestscan用作编译器/链接器可执行文件的包装器
  • 如果您不想(或无法)在命令行上覆盖编译器变量,请将cpptestscan嵌入实际的 make 文件或构建脚本中。

要将cpptesttrace与现有构建一起使用,请使用cpptesttrace作为整个构建命令的前缀构建代码库。 cpptesttrace 将跟踪在构建期间执行的编译器和链接器进程,并将它们存储在构建数据文件中。

在这两种情况下,您都需要将 C++test 安装目录添加到 PATH 环境变量中,或者指定任一实用程序的完整路径。

下表总结了cpptestscancpptesttrace的其他选项。 可以直接为cpptestscan命令设置选项,也可以通过环境变量设置选项。通过在命令行中更改前缀,可以将大多数选项应用于cpptestscancpptesttrace

基本cpptestscan 用法:

  • Windows: cpptestscan.exe [options] [compile/link command]
  • Linux: cpptestscan [options] [compile/link command]

基本cpptesttrace用法:

  • Windows: cpptesttrace.exe [options] [build command]
  • Linux: cpptesttrace [options] [build command]
选项环境变量说明默认
--
cpptestscanOutputFile= 
<OUTPUT_FILE>
--
cpptesttraceOutputFile=
<OUTPUT_FILE>

CPPTEST_SCAN_OUTPUT_FILE)

定义要将构建信息附加到的文件。cpptestscan.bdf

--
cpptestscanProjectNam
e=<PROJECT_NAME>

--
cpptesttraceProjectNam
e=<PROJECT_NAME>

CPPTEST_SCAN_PROJECT_NAME定义 C++test 项目的建议名称。当前工作目录的名称

--
cpptestscanRunOrigCm
d=
[yes|no]

--
cpptesttraceRunOrigCm
d=[yes|no]

CPPTEST_SCAN_RUN_ORIG_CMD如果设置为“是”,将执行原始命令行。

--
cpptestscanQuoteCmdLi
neMode=[all|sq|none]

--
cpptesttraceQuoteCmdL
ineMode=[all|sq|none]

CPPTEST_SCAN_QUOTE_CMD_LINE_MODE

确定在准备运行 cmd 行时 C++test 引用参数的方式。

All::将引用所有参数

None::不会引用参数

Sq:: 仅引用带有空格或引号的参数

Linux 不支持 cpptestscanQuoteCm dLineMode


全部

--
cpptestscanCmdLinePre
fix=
<PREFIX>

--
cpptesttraceCmdLinePre
fix=<PREFIX>

CPPTEST_SCAN_CMD_LINE_PREFIX如果打开了非空且正在运行的原始可执行文件,则指定的命令将以原始命令行为前缀。[空]

--
cpptestscanEnvInOutput
=[yes|no]

--
cpptesttraceEnvInOutput
=[yes|no]

CPPTEST_SCAN_ENV_IN_OUTPUT

启用转储选定的环境变量和输出文件的命令行参数。对于高级设置,请使用– cpptestscanEnvFile 和– cpptestscanEnvars 选项

--
cpptestscanEnvFile=<E
NV_FILE>

--
cpptesttraceEnvFile=<E
NV_FILE>

CPPTEST_SCAN_ENV_FILE

如果启用,指定文件将保留所有构建命令的常见环境变量:主输出文件只会保持差异。使用此选项来缩小主输出文件的大小。在启用 – cpptestscanEnvInOut 的情况下使用此选项

[空]

--
cpptestscanEnvars=[*|<
ENVAR_NAME>,...]

--
cpptesttraceEnvars=[*|<
ENVAR_NAME>,...]

CPPTEST_SCAN_ENVARS选择要转储的环境变量的名称,或选择 '*' 将其全部选中。在启用 – cpptestscanEnvInOut 的情况下使用此选项*

--
cpptestscanUseVariable
=[VAR_NAME=VALUE,...]

--
cpptesttraceUseVariable
=[VAR_NAME=VALUE,...]

CPPTEST_SCAN_USE_VARIABLE用 "${VAR_NAME}" 变量用法替换扫描的构建信息中每次出现的 "VALUE" 字符串。[空]
--
cpptesttraceTraceCommand
CPPTEST_SCAN_TRACE_COMMAND定义在收集构建过程信息时将被跟踪的命令名称。这些名称(指定为正则表达式)应与构建过程中使用的原始编译器/链接器命令匹配。

示例:修改 GNU Make Build 命令以使用 cpptestscan

假设编译器变量为 CXX 而原始编译器为 g++ 的基于 make 的构建:

      make -f </path/to/makefile> <make target> [user-specific options] CXX="cpptestscan --cpptestscanOutputFile=/path/to/name.bdf --cpptestscanProjectName=<projectname> g++"

这将照常构建代码,并在指定目录中生成构建数据文件(name.bdf)。

Note
title注意

当构建在多个目录中运行时:

  • 如果未指定输出文件,则每个源构建目录将具有其自己的 .bdf 文件。这对于每个源目录创建一个项目很有帮助。
  • 如果您希望每个源码树都有一个项目,那么就需要指定一个 .bdf 文件,如上面的示例所示。

示例:使用 cpptesttrace 修改 GNU Make Build 命令

假定使用以下命令执行基于 make 的常规构建:

     make clean all

您可以使用以下命令行:

     cpptesttrace --cpptesttraceOutputFile=/path/to/name.bdf --cpptesttraceProjectName=<projectname> make clean all

这将按常规构建代码,并在指定目录中生成一个构建数据文件(name.bdf)。

Note
title注意

如果编译器和/或链接器可执行文件的名称不匹配默认的 cpptesttrace命令模式,您将需要使用下面描述的 --cpptesttraceTraceCommand 选项来定制它们。通过运行 'cpptesttrace --cpptesttraceHelp’命令可以看到默认的 cpptestscan 命令跟踪模式。

示例:修改 GNU Makefile 以使用 cpptestscan

如果您的 Makefile 使用 CXX 作为编译器可执行文件的变量,并且通常定义为 CXX=g++,则可以重新定义该变量:

     ifeq ($(BUILD_MODE), PARASOFT_CPPTEST)
     CXX="/usr/local/parasoft/cpptestscan --cpptestscanOutputFile=<selected_location>/MyProject.bdf --cpptestscanProjectName=MyProject g++"
     else
 CXX=g++
endif

接下来,像往常一样运行构建,并为 make 指定一个附加的 BUILD_MODE 变量:

     make BUILD_MODE=PARASOFT_CPPTEST

将构建代码并创建一个构建数据文件(MyProject.bdf)。然后,可以使用生成的构建数据文件从 GUI 或从命令行创建项目。

Note
title注意

cpptestscancpptesttrace 实用程序可以在并行构建系统中使用,在并行构建系统中,可以同时执行多个编译器执行。例如,在多核计算机上准备构建数据文件时,可以将 -j <number_of_parallel_jobs> 参数传递给 GNU make 命令来构建项目并快速准备构建数据文件。

Info

以下示例演示了如何使用cpptestscancpptesttrace为 Cmake 项目创建 .bdf 文件。对于复杂的场景和单元测试,请考虑使用针对 CMake 的 C/C++test 扩展将 C/C++test 集成到 Cmake 构建中。请参见 将 C/C++test 集成到 Cmake 构建中

示例:将 cpptesttrace 与 CMake 构建一起使用

假设您具有基于 CMake 的构建,则可以使用 cpptesttrace 生成构建数据文件:

  1. 运行原始的 Cmake 命令以使用 Cmake 生成 make 文件。示例:

    Code Block
    cmake -G "Unix Makefiles" ../project_root
  2. cpptestscan设置环境变量,确保为输出文件使用绝对路径:

    Code Block
    export CPPTEST_SCAN_PROJECT_NAME=my_project
    export CPPTEST_SCAN_OUTPUT_FILE=$PROJ_ROOT/cpptestscan.bdf
  3. 确保 cpptesttrace 可执行文件在 PATH 上可用。
  4. 正常运行项目构建,但使用cpptesttrace作为 wrapper。 例如,如果正常的构建命令是 'cpptesttrace’的 make clean all,那么命令将是 cpptesttrace make clean all

将在 CPPTEST_SCAN_OUTPUT_FILE 变量定义的位置生成一个构建数据文件。如果未设置该变量,则将在 Makefiles 的位置生成构建数据文件。

示例:将 cpptestscan 与 CMake 构建一起使用

所有脚本和命令都是基于 bash 的-根据需要对它们进行调整以适应不同的 shell。

假定基于 Cmake 的构建,请执行以下操作以使用 cpptestscan 生成构建数据文件:

  1. 使用 CMake 重新生成 make 文件,并将 'cpptestscan’用作编译器前缀。确保‘cpptestscan’可执行文件在 PATH 上可用。
    1. 如果原始 CMake 命令是cmake -G “Unix Makefiles” ../project_root,则您需要摆脱现有的 Cmake 缓存并运行 cmake 覆盖编译器变量。以下示例假定将 'gcc’用作 C 编译器,并将 'g++’用作 C++ 编译器可执行文件:

      Code Block
      rm CMakeCache.txt
      CC="cpptestscan gcc" CXX="cpptestscan g++" cmake -G "Unix Makefiles" ../project_root
    2. 在 CMakeCache.txt 文件中查找以查看 CMAKE_*_COMPILER 变量是否指向 cpptestscan。
    3. 如果重新生成了 make 文件,请跳至步骤 5。如果cmake在启动阶段由于未识别编译器而失败,请继续。
  2. 通过创建以下 BASH 脚本,准备性能类似于 Cmake 编译器的cpptestscan包装器脚本。在此示例中,我们假设将 'gcc' 用作 C 编译器,并将 'g++’用作 C++ 编译器可执行文件:

    Code Block
    >cat cpptest_gcc.sh
    #!/bin/bash
    cpptestscan gcc --cpptestscanRunOrigCmd=no $* > /dev/null 2>&1 gcc $*
    exit $?
    
    >cat cpptest_g++.sh
    #!/bin/bash
    cpptestscan g++ --cpptestscanRunOrigCmd=no $* > /dev/null 2>&1 g++ $*
    exit $?


    • 第一个脚本调用cpptestscan来提取选项,而无需运行编译器。第二个脚本运行实际的编译器,以便整个脚本的外观和行为类似于编译器,以便被 CMake“接受”。
  3. 为脚本提供可执行属性,并将它们放置在一个共同的位置,以便每个需要扫描文件的人都能够访问它们。确保cpptestscan和脚本在 PATH 上可用。
  4. 通过扩展原始的 CMake 命令,并使用从准备好的脚本中重新生成 make 文件的选项,可以使用 Cmake 通过用作编译器的脚本重新生成 make 文件。
    • 原始的 Cmake 命令是 cmake -G “Unix Makefiles” ../project_root 那么您需要摆脱现有的 CMake 缓存并运行 cmake 覆盖编译器变量。在下面的示例中,我们假设将 'gcc’用作 C 编译器,并将 'g++’用作 C++ 编译器可执行文件:

      Code Block
      rm CMakeCache.txt
      cmake -G "Unix Makefiles" -D CMAKE_C_COMPILER=cpptest_gcc.sh -D CMAKE_CXX_COMPILER=cpptest_g++.sh ../project_root
    • 在 CMakeCache.txt 文件中查找以查看 CMAKE_*_COMPILER 变量是否指向准备好的包装器。
  5. cpptestscan设置环境变量;确保为输出 BDF 文件使用绝对路径:

    Code Block
    export CPPTEST_SCAN_PROJECT_NAME=my_project
    export CPPTEST_SCAN_OUTPUT_FILE=$PROJ_ROOT/cpptestscan.bdf
  6. 正常运行项目构建,而不会覆盖任何 make 变量。构建数据文件将在 CPPTEST_SCAN_OUTPUT_FILE 变量定义的位置生成,或者-如果未设置,则在 Makefile 的位置生成。
Note
title注意

默认情况下,CMake 生成的 make 文件仅输出有关已执行操作的信息,而没有实际的编译器/链接器命令行。在 make 命令行中添加“ VERBOSE = 1”,以查看已执行的编译器/链接器命令行。

在其他构建系统上使用 cpptestscan 或 cpptestrace

对于非基于 make 的构建系统,cpptestscan 和 cpptesttrace 的用法与上面显示的示例非常相似。通常,编译器在构建脚本中的某处定义为变量。要使用 cpptestscan 从该构建系统创建构建数据文件,请在原始编译器可执行文件前加上 cpptestscan 前缀。要使用 cpptesttrace 从该构建系统创建构建数据文件,请在整个构建命令行前添加 cpptesttrace 前缀。

Info

什么时候应该使用 cpptestscan?

强烈建议将构建数据文件的过程与构建系统集成在一起。这样,可以在执行常规构建而无需其他操作的情况下完成生成构建数据文件的操作。

为此,请在 Makefiles/构建脚本中使用 cpptestscan 实用程序为编译器和链接器可执行文件添加前缀。

什么时候应该使用 cpptesttrace?

如果无法修改 Makefiles/构建脚本,或者在构建命令行中给编译器/链接器可执行文件加前缀太复杂时,请使用 cpptesttrace 作为整个构建命令的前缀。

使用带有 GUI 向导的构建数据文件导入项目

您可以使用【项目创建】向导来导入 BDF 或 Cmake 构建定义文件,这将创建 C++test 项目。

Info
title自定义编译器先决条件

如果您正在使用自定义编译器,请在Configuring Testing with the Cross Compiler 启动向导之前按照说明添加它。 

要从构建数据/定义文件创建项目:

  1. 选择文件> 新建>项目然后选择C++test> 从构建数据文件(.bdf/.json)创建项目。 
  2. 单击下一步 浏览构建数据/定义文件。
  3. 指定项目的位置。启用使用工作空间位置【项目位置】选项将在工作空间位置的子目录中创建项目。启用使用外部位置会直接在指定位置创建一个项目。   如果创建了多个项目,则将在指定的外部位置创建每个项目的子目录。有关可用的项目创建选项及其影响的详细信息,请参见 使用 C++test 项目
  4. 指定项目的编译器设置。 可以手动 配置 设置或指定编译器系列,然后单击 自动检测以自动配置它们。您可以通过使用-list-compilers切换到运行cpptestcli来查看受支持的编译器列表
  5. 单击下一步并验证项目的结构和内容并根据需要进行修改。 
     
    1. 第一层列出了将要创建的所有项目。要更改项目名称或将其他文件夹链接到项目,请右键单击项目名称,然后选择适当的快捷菜单命令。
    2. 第二层列出了将要链接的所有文件夹。要更改文件夹的名称或防止其包含在项目中,请右键单击文件夹名称,然后选择适当的快捷菜单命令。
    3. 在树的更深处,您将看到链接的文件夹中存在的所有文件夹和文件。绿色标记用于指示 .bdf 文件中引用的文件。
  6. 单击完成以完成向导或单击下一步以设置路径变量(可选)。如果设置路径变量:
    1. 启用使用路径变量定义链接文件夹的位置(如果适用) 选项以使用链接文件夹中的路径变量,然后从 路径变量列表 菜单中选择预定义的路径变量或自定义路径变量。如果选择自定义路径变量,请在相应字段中手动输入路径变量名称和值。
    2. 单击 完成然后 C++test 将在指定的位置创建指定的项目。项目将包括所有扫描了选项的源文件,并且应适当设置项目属性

从命令行创建项目
Anchor
command_line
command_line

您也可以通过使用 -bdf <cpptestscan.bdf>切换到cpptestcli在命令行模式下创建基于 BDF 的项目。

如果要在创建项目后立即执行分析(例如,静态分析和/或测试生成),请确保 cpptestcli 命令使用 -config 调用首选的测试配置。 示例:

cpptestcli -data "</path/to/workspace>" -resource "<projectname>" -config "team://Team Configuration"  -localsettings "</path/to/name.properties>" -bdf  "</path/to/name.bdf>"

如果您只是想创建项目(不执行任何分析),请省略  -config。示例:

cpptestcli -data "</path/to/workspace>" -resource "<projectname>" -localsettings "</path/to/name.properties>" -bdf  "</path/to/name.bdf>"

请注意,以前用于创建未经测试的项目的 -config "util/CreateProjectOnly”在当前版本的 C++test 中不再使用。不再支持伪造的测试配置“util/CreateProjectOnly”。

您可以在纯文本选项文件中定义自定义项目设置,该文件使用 -localsettings转换传递到cpptestcli。 可以在选项文件中指定设置,如本地设置(选项)文件中所述。

示例

以下示例演示了如何使用cpptestscan从命令行创建 C++test 项目。 他们使用 C++test 的 ATM 示例,该示例可在<INSTALL_DIR>/examples/ATM 目录中找到

这些示例使用基于 make 的构建;但是可以从任何构建系统生成 .bdf 文件。

假设和先决条件

  • cpptestscan可执行文件应包含在 $PATH 中(位于 C++test 的安装目录中)。
  • cpptestcli可执行文件应包含在 $PATH 中(位于 C++test 的安装目录中)。
  • 假定g++ 是原始编译器可执行文件。
  • 必须使用给定的 shell/命令提示符支持的格式输入工作空间和 .bdf 文件位置。示例:
    • /home/MyWorkspace on UNIX/Cygwin
    • c:\home\MyWorkspace on Windows
    • c:/home/MyWorkspace on Cygwin
  • 要创建项目而不执行任何测试,请省略 -config
  • 要创建和测试新项目,请使用适当的测试配置(例如,-config Must-HaveRules).
  • 将执行完整的项目重建("clean all"),以确保在 make run 中构建所有对象

示例 1- 使用默认设置在工作区位置中创建 C++test 项目

  1. 基于原始 Makefile 创建构建数据文件(.bdf),如下所示:
    1. 跳转到<INSTALL_DIR>/examples/ATM目录。
    2. 在使用cpptestscan可执行文件为原始编译器可执行文件添加前缀的同时,构建 ATM 项目:
      > make CC="cpptestscan g++" clean all
    3. 请注意,在 <INSTALL_DIR>/examples/ATM 目录中创建了一个新的数据文件(cpptestscan.bdf)
  2. 根据构建数据文件(.bdf)创建 C++test 项目,如下所示:
    1. 使用 C++test 的 CLI 模式在/home/MyWorkspace 工作空间:
      > cpptestcli -data /home/MyWorkspace -bdf cpptestscan.bdf中创建一个新项目
    2. 请注意,在 MyWorkspace 位置创建了一个新的 C++test 项目(ATM)。它包含原始<INSTALL_DIR>/examples/ATM项目的所有源文件和构建选项。

示例 2 - 在原始项目的位置创建 C++test 项目,将“ Visual C++ 7.1”设置为编译器,将“myProject”设置为项目名称

  1. 基于原始 Makefile 创建构建数据文件(.bdf),如下所示:
    1. 跳转到<INSTALL_DIR>/examples/ATM目录。
    2. 在使用cpptestscan可执行文件为原始编译器可执行文件加上前缀的情况下构建 ATM 项目:
      > make CC="cpptestscan --cpptestscanProjectName=myProject g++" clean all
    3. 请注意,在 <INSTALL_DIR>/examples/ATM 目录中创建了一个新的数据文件(cpptestscan.bdf)。请注意myProject被设置为项目名称。
  2. 根据构建数据文件(.bdf)创建 C++test 项目,如下所示:
    • 首先,覆盖默认设置:
      1. <INSTALL_DIR>/examples/ATM中创建一个名为opts.properties的纯文本选项文件。
      2. 通过将 bdf.import.compiler.family=vc_7_1 输入到opts.properties 文件中,将编译器系列设置为 Visual C++ 7.1。
      3. 将目标项目位置更改为 cpptestscan.bdf 文件(位于原始项目的目录中)的位置,输入:
        bdf.import.location=BDF_LOC into opts.properties file
    • 然后,使用 C++test 的 CLI 模式在/home/MyWorkspace 工作空间:
      cpptestcli -data /home/MyWorkspace -bdf cpptestscan.bdf -localsettings opts.properties中创建一个新项目
    • 最后, 注意到在 <INSTALL_DIR>/examples/ATM 位置已经创建了一个新建的 C++test 项目,包含原始的 <INSTALL_DIR>/examples/ATM 项目的所有源文件和构建选项,将 Visual C++ 7.1 设置为编译器系列。

注释:

  • 在此示例中使用了在受支持的编译器中列出的 vc_7_1。要使用自定义编译器,您需要在 C++test 首选项面板 (配置>自定义目录>自定义编译器)中指定其路径。有关详细信息,请参见Configuring Testing with the Cross Compiler
  • BDF_LOC变量用作项目位置;这是指cpptestscan.bdf文件的位置

然后,可以使用生成的构建数据文件从 GUI 或从命令行创建项目。

Anchor
cmake_integration
cmake_integration
请将 C/C++test 集成到 Cmake 构建中

C/C++test 附带了 Cmake 扩展,允许您使用 Cmake 语法直接在CMakeLists.txt构建文件中定义 C/C++test 项目。 该扩展包括 cpptest_add_executable() 函数,用于定义 C/C++test 项目,包括项目位置,结构和内容。结果,在 Cmake 构建期间会自动生成 C/C++test 项目定义文件(.project 和 .parasoft)和构建数据文件(.bdf)。构建完成后,您可以将 C/C++test 项目文件和 BDF 导入工作空间中以执行分析和测试。

对 CMake 集成的支持包括以下组件:

  • <CPPTEST_INSTALL_DIR>/integration/cmake/cmake/cpptest.cmake – 您需要将 Cmake 的 C/C++test 扩展名添加到 CMakeFiles.txt构建文件中,以提供 C/C++test 项目定义。
  • <CPPTEST_INSTALL_DIR>/integration/cmake/cmake/cpptest.templates/*.in – 一组用于自动生成的项目定义文件的 C/C++test 模板,使您可以高度自定义 Cmake 的扩展。

此外,<CPPTEST_INSTALL_DIR>/integration/cmake目录包含一个示例项目,以演示使用 C/C++test 扩展与 Cmake 的集成。

要求

  • Linux 64-bit
  • 适用于 Linux 64 位的 C/C++test 专业版
  • CMake 3.10 或更高版本

工作流程概述

  1. <INSTALL_DIR>/integration/cmake/cmake/cpptest.cmake 包含到CMakeLists.txt构建文件中。
  2. 使用 cpptest_add_executable() 函数定义一个代表您的 C/C++test 项目的目标 (有关详细信息,请参见定义 C/C++test 项目 )。
  3. 使用configurebuild命令运行 Cmake 以生成 C/C++test 项目配置文件。
  4. 通过 UI(导入>常规>现有项目到工作空间)或命令行(-import <ROOT_FOLDER_OR_PROJECT_FILE>)将自动生成的 C/C++test 项目导入到 Eclipse 工作区。
  5. 创建测试用例并配置桩函数。有关详细信息,请参见Test Creation and Execution
  6. 运行单元测试。

如果将测试工件(例如测试用例或桩函数)存储在源代码控制系统中,请不要检入自动生成的项目定义文件或构建数据文件(.bdf)。每次构建 Cmake 项目时都应生成这些文件。

Anchor
cmake_target_options
cmake_target_options
定义 C/C++test 项目

为了使 Cmake 自动生成 C/C++test 项目文件,您必须使用cpptest_add_executable()函数定义一个代表您的 C/C++test 项目的目标。至少必须配置:

  • 目标的名称。
  • 您要添加到 C/C++test 项目的所有源文件。
  • 使用常规 Cmake 函数(例如target_include_directories()target_link_libraries())构建选项和依赖项(外部库)。

提供以下选项:

选项名称说明默认
<target_name>目标的名称。没有默认。您必须始终配置此选项。
CPPTEST_COMPILER_ID

目标特定的 C/C++test 编译器标识符。要为所有目标配置相同的编译器,请在cpptest.cmake中指定标识符。

gcc_9-64
CPPTEST_PROJECT_NAMEC/C++test 项目的名称。与目标名称相同。
CPPTEST_PROJECT_LOCC/C++test 项目的位置。当前文件夹。
CPPTEST_PROJECT_FOLDERS您想要包含在 C/C++test 项目中的其他源文件夹。您必须指定每个其他文件夹的名称和位置。默认情况下,C/C++test 项目仅包含根目录。
EXCLUDE_FROM_ALL

如果指定,则当前目标将从默认的all目标中排除。

禁用:
SOURCES您想要添加到 C/C++test 项目的源列表。没有默认。您必须始终配置此选项。
TARGETS现有 CMake 目标的列表。如果已配置,则来自指定目标的源文件列表将添加到 C/C++test 项目。没有默认。您必须始终配置此选项。
Code Block
cpptest_add_executable(
<target_name>
[CPPTEST_COMPILER_ID <compiler_id>]
[CPPTEST_PROJECT_NAME <test_project_name>]
[CPPTEST_PROJECT_LOC <test_project_location>]
[CPPTEST_PROJECT_FOLDERS <name1=location1> <name2=location2> ...]
[EXCLUDE_FROM_ALL]
SOURCES <src1.cpp> <src2.cpp> ... | TARGETS <target1> <target2> ...
)

与 Cmake 集成的示例

本节使用位于<CPPTEST_INSTALL_DIR>/integration/cmake目录中的示例项目演示与 Cmake 的集成。 

  1. 跳转到<CPPTEST_INSTALL_DIR>/integration/cmake
  2. 如果您使用默认 GNU GCC 9(x64)以外的编译器,请在modules/mod1/CMakeLists.txtcmake/cpptest.cmake中用您的编译器标识符替换默认编译器标识符gcc_9-64
  3. 使用以下命令构建示例项目:

    Code Block
    > cd <CPPTEST_INSTALL_DIR>/integration/cmake
    > mkdir build
    > cd build
    > cmake ..
    > make

    CMake 将构建项目并生成 C/C++test 项目。以下 CMakeLists.txt 文件定义了 C/C++test 项目(具有不同的项目布局和配置选项):

    - app/CMakeLists.txt
    - modules/mod1/CMakeLists.txt
    - tests/cpptest_modules/CMakeLists.txt
  4. 在您安装了 C/C++test 的 IDE 中打开一个空的工作空间。
  5. 从 IDE 菜单中选择文件> 导入> 常规> 现有项目到工作空间,然后导航到<CPPTEST_INSTALL_DIR>/integration/cmake目录,以将三个自动生成的项目导入到您的 IDE 中。
  6. 使用builtin://Generate Unit Tests测试配置生成测试用例。
  7. 使用builtin://Run Unit Test测试配置来执行测试用例。