Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cmake/ctest generate Test.xml(不重建?)/无法加载缓存_Cmake_Ctest - Fatal编程技术网

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)