【发布时间】:2020-09-21 10:26:48
【问题描述】:
我有一些使用 CMake 编译的源代码,单元测试通过 CMake 指令 add_test() 添加到 CTest。我想要这个测试套件中使用的可执行文件列表(绝对/相对路径)。
由于测试添加如下:
add_test(NAME ${A} COMMAND ${execA})
add_test(NAME ${B} COMMAND ${execB})
add_test(NAME ${C} COMMAND ${execA} ${addOptions})
三个测试(${A}、${B} 和 ${C})只有两个不同的可执行文件(${execA}、${execB})。
我完全可以有重复和忽略选项或有选项。
因此,理想的输出如下(但如果需要,我当然可以手动进行一些解析):
src/folder1/test/testThisFunction
src/folder2/test/testThatFunction
src/folder1/test/testThisFunction -WithThisFlag
我能得到的最接近的是:
ctest -N,--show-only
它不运行测试,而只是显示它们:
Start 1: testA
1/3 Test #1: testA ....................... Passed 0.01 sec
Start 2: testB
2/3 Test #2: testB ....................... Passed 0.01 sec
Start 3: testC
3/3 Test #3: testC ........................ Passed 0.01 sec
很遗憾,此输出不包含有关可执行文件路径的信息。
在上面的这个例子中,假设
${execA} = testThisFunction
${execB} = testThatFunction
testThisFunction 和 testThatFunction 是 CMake 目标(单元测试)和
${A} = "testA"
${B} = "testB"
${C} = "testC"
${addOptions} = "-WithThisFlag"
分别存储测试和选项的名称。
虽然我可以访问 CMakeLists.txt,但我强烈希望在 CMake 配置和后续编译已经完成后仅在 ctest 级别执行此操作(因此,不使用生成可执行文件列表) CMakeLists.txt 中的 CMake 命令)。
如果这是相关的,我正在使用 CTest 3.10.2,但可以升级。
【问题讨论】: