章节目录:
前言
如果您有一个自定义构建系统(例如,基于 Makefile 的构建系统),可以使用 C/C++test 的 cpptestscan
工具收集构建过程相关的信息,从而简化构建设置的配置流程。之后,您就可以按照使用构建数据文件中的选项中的说明将 C/C++test 指向生成的“构建数据文件”来配置构建设置。
关于构建数据文件(.bdf)
构建信息(如工作目录、编译的命令行选项以及原始构建的链接进程)存储在构建数据文件中。以下示例来自构建数据文件的一部分:
------- 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
使用 cpptestscan
或 cpptesttrace
创建构建数据文件
cpptestscan
和 cpptesttrace
可执行文件随 C/C++test 一起提供 <INSTALL_DIR>
目录。它们从现有代码库的构建过程中收集信息,用这些信息生成构建数据文件,并将有关每个执行的信息添加到文件中。
cpptestscan
工具在正常构建期间用作编译器和/或链接器的包装器。要对现有构建使用 cpptestscan
,应将 cpptestscan
用作现有构建的编译器/链接器可执行文件的前缀来构建代码库。具体可以通过两种方式完成:
- 修改构建命令行,将
cpptestscan
用作编译器/链接器可执行文件的包装器 - 如果不想(或不能)在命令行重写编译器变量,可在实际的 make 文件或构建脚本中插入
cpptestscan
。
要对现有构建使用 cpptesttrace
,应将 cpptesttrace
用作整个构建命令的前缀。cpptesttrace
将跟踪构建期间执行的编译器和链接器进程,并将它们存储在构建数据文件中。
在以上两种情况下,您都需要将 C++test 安装目录添加到 PATH
环境变量中或指定任一工具的完整路径。
有关 cpptestscan
和 cpptesttrace
的更多选项汇总在下面的表中。可以直接或通过环境变量设置 cpptestscan
命令的选项。通过更改命令行中的前缀,大多数选项都可以应用于 cpptestscan
或 cpptesttrace
。
cpptestscan
基本用法:
cpptestscan [options] [compile/link command] cpptestscan --cpptestscanHelp
cpptesttrace
基本用法:
cpptesttrace [options] [build command] cpptesttrace --cpptesttraceHelp
选项 | 环境变量 | 说明 | 默认值 |
---|---|---|---|
| CPPTEST_SCAN_OUTPUT_FILE) | 定义要附加生成信息的文件。 | cpptestscan.bdf |
| CPPTEST_SCAN_PROJECT_NAME | 定义 C++test 项目的建议名称。 | 当前工作目录的名称 |
| CPPTEST_SCAN_RUN_ORIG_CMD | 如果设置为“yes”,将执行原始命令行。 | yes |
| CPPTEST_SCAN_QUOTE_CMD_LINE_MODE | 确定 C++test 在准备运行命令行时为参数添加引号的方式。
Linux 上不支持 --cpptestscanQuoteCmdLineMode。 | all |
| CPPTEST_SCAN_CMD_LINE_PREFIX | 如果启用了非空且正在运行的原始可执行文件,则指定的命令将添加到原始命令行前面。 | [empty] |
| CPPTEST_SCAN_ENV_IN_OUTPUT | 启用后将转储选定的环境变量和输出文件的命令行参数。对于高级设置需使用 --cpptestscanEnvFile 和 --cpptestscanEnvars 选项。 | no |
| CPPTEST_SCAN_ENV_FILE | 如果启用,指定的文件为所有构建命令保存公共环境变量;主输出文件将只保留差异。使用此选项可减小主输出文件的大小。 在启用 --cpptestscanEnvInOutput 的情况下使用此选项。 | [empty] |
| CPPTEST_SCAN_ENVARS | 选择要转储的环境变量的名称,或选择‘*’来选择所有变量。在启用 --cpptestscanEnvInOutput 的情况下使用此选项。 | * |
| CPPTEST_SCAN_USE_VARIABLE | 使用“${VAR_NAME}”变量用法替换扫描构建信息中每次出现的“VALUE”字符串。 | [empty] |
| CPPTEST_SCAN_TRACE_COMMAND | 定义收集构建过程信息时将跟踪的命令名称。这些指定为正则表达式的名称应该与构建过程中使用的原始编译器/链接器命令相匹配。 |
示例:将 GNU Make Build 命令修改为使用 cpptestscan
假设基于 make 的构建中编译器变量为 CXX,原始编译器为 g++:
make -f </path/to/makefile> <make target> [user-specific options] CXX="cpptestscan --cpptestscanOutputFile=/path/to/name.bdf --cpptestscanProjectName=<projectname> g++"
这将按常规方式构建代码,并在指定的目录中生成一个构建数据文件(name.bdf)。
注意
当构建在多个目录中运行时:
- 如果不指定输出文件,则每个源构建目录都将有自己的 .bdf 文件。这有利于为每个源目录创建一个项目。
- 如果您希望每个源目录树都有一个项目,那么需要指定一个 .bdf 文件,如上面示例所示。
示例:将 GNU Make Build 命令修改为使用 cpptesttrace
假设使用以下方法执行常规的基于 make 的构建:
make clean all
您可以使用以下命令行:
cpptesttrace --cpptesttraceOutputFile=/path/to/name.bdf --cpptesttraceProjectName=<projectname> make clean all
这将按常规方式构建代码,并在指定的目录中生成一个构建数据文件(name.bdf)。
注意
如果编译器和/或链接器可执行文件名称与默认 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 或命令行创建项目。
注意
cpptestscan
和 cpptesttrace
工具可以用在并行构建系统中,在并行构建系统中可以同时执行多个编译器。例如,在多核机器上准备构建数据文件时,可以将 -j <number_of_parallel_jobs>
参数传递给 GNU make 命令来构建项目并快速准备构建数据文件。
什么时候应该使用 cpptestscan?
强烈建议将准备构建数据文件的过程与构建系统集成。这样,生成构建数据文件就可以在执行常规构建时完成,而无需额外的操作。
要实现这一目的,应在 Makefiles/构建脚本中将 cpptestscan 工具用作编译器和链接器可执行文件的前缀。
什么时候应该使用 cpptesttrace?
当无法修改 Makefiles/构建脚本或在构建命令行给编译器/链接器可执行文件添加前缀太过复杂时,应使用 cpptesttrace 作为整个构建命令的前缀。