cmake/ctest generate Test.xml(不重建?)/无法加载缓存
我有一个基于cmake/ctest generate Test.xml(不重建?)/无法加载缓存,cmake,ctest,Cmake,Ctest,我有一个基于cmake的(C++)项目,其中包括通过add_test()创建的测试。 构建过程基本上是: 克马克 制作所有测试套件 测验 一段时间以来,这种做法一直行之有效 我现在正试图让我的构建生成一个Test.xml,作为管道构建的一部分提交。它不适用于此项目 Q1我可以告诉cmake我希望在它(make Test)运行测试时生成Test.xml 目前我认为只有运行ctest才能创建Test.xml。 大概ctest汇总了测试结果,而cmake只是盲目地运行它们? 有人能证实或反驳这一点
cmake
的(C++)项目,其中包括通过add_test()
创建的测试。
构建过程基本上是:
- 克马克
- 制作所有测试套件
- 测验
Test.xml
,作为管道构建的一部分提交。它不适用于此项目
Q1我可以告诉cmake
我希望在它(make Test)运行测试时生成Test.xml
目前我认为只有运行ctest
才能创建Test.xml
。
大概ctest汇总了测试结果,而cmake
只是盲目地运行它们?
有人能证实或反驳这一点吗
因此,我目前正在尝试使用以下方法运行ctest:
ctest -vv -debug --output-on-failure -T test
因为这确实创建了我需要的Test.xml
文件。
我不得不添加include(CTest)
&include(Dart)
来修复“找不到dartcl
”的问题
但是,即使我以前运行过“make test
”,它保证构建是最新的,但它仍会尝试构建,我得到:
Error: could not load cache
对于运行编译测试的测试(基于脚本的测试工作正常)。
它正在执行的命令是:
/opt/cmake-3.18.1/bin/cmake "--build" "<projectDir>/test/<TestName>" --target "<test_exe>"
问题2:有没有办法告诉ctest它不需要运行cmake
我的怀疑是否定的。ctest是否必须调用cmake来运行测试?它只是监视和聚合输出吗
如果我查看DartConfiguration.tcl,我有:
SourceDirectory: <projectDir/cmake
BuildDirectory: <projectDir/cmake
ConfigureCommand: "/opt/cmake-3.18.1/bin/cmake" "<projectDir/cmake"
MakeCommand: /opt/cmake-3.18.1/bin/cmake --build . --config "${CTEST_CONFIGURATION_TYPE}" -- -i
其中一个创建了DartConfiguration.tcl,它只是“key:value”对的列表。我认为这是在直接调用ctest时使用的,这里不是这样。
我不完全清楚为什么和他们到底是为了什么,尽管阅读
同样发布在cmake对话频道-上的结果是,我使用了一些伪测试来通过cmake--build构建测试驱动程序。这些都是使用CMAKE_CURRENT_目录而不是CMAKE_SOURCE_目录显式地、令人费解地实现的。哎呀
SourceDirectory: <projectDir/cmake
BuildDirectory: <projectDir/cmake
ConfigureCommand: "/opt/cmake-3.18.1/bin/cmake" "<projectDir/cmake"
MakeCommand: /opt/cmake-3.18.1/bin/cmake --build . --config "${CTEST_CONFIGURATION_TYPE}" -- -i
include(CTest)
include(Dart)