问题标签 [ctest]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cmake - 如何使用 CMake 或 CTest 获取主机名
是否可以轻松获取启动 CMake 配置的主机名?
如果不可能,我如何获得启动 CTest 的主机名?
我在 Windows 和 Linux 下使用 CMake 和 CTest。
谢谢,
testing - CMake:为 ctest 设置环境变量(或者自动从 ctest/make test 获取失败的测试输出)
我希望 ctest 默认向我显示失败的测试输出。也就是说,我想运行:
并查看失败测试的任何输出,而无需cat Testing/Temporary/LastTest.log
.
似乎有两种方法可以做到这一点:
(1) 设置CTEST_OUTPUT_ON_FAILURE
环境变量:
(2) 指定调用的--output-on-failure
标志:ctest
有没有办法编写 CMakeLists.txt 文件,以便 ctests 在正常的“全部测试”调用中默认转储失败的测试输出,而无需在会话中全局导出环境变量或使用自定义目标make check
(如所述在这里)?
我知道该SET_TESTS_PROPERTIES()
命令,但尝试如下:
并且实验表明环境变量是在执行测试程序的shell中设置的,而不是在执行ctest的shell中设置的。
linker - CMake 似乎没有链接 CppUnit
这可能已经在某个地方得到了回答,所以如果是这样,请指出我正确的方向 - 我在谷歌搜索时找不到任何与我的具体问题相匹配的东西!
我有一些我正在尝试运行的 CppUnit 测试。
我的顶级 CMakeLists.txt 包含:
两者都设置正确:我在 CMakeLists.txt 文件中打印了前面的路径,它们是正确的。
在子文件夹中,我有;
但是,当我运行测试(通过运行文件或使用ctest -V
)时,我看到了通常的链接器错误 编辑:这不是链接器错误,请参阅下面的答案
该库肯定存在,在顶层 CMakeLists.txt 中先前设置的路径中。
我难住了!我假设有一些我完全丢失的关键,但我不知道它是什么。如果您想了解更多信息,请告诉我,我会添加。
干杯。
c++ - CMake:如何使用相关目录添加 Boost.Test 用例?
我有一个使用 CMake 和 Boost.Test 的工作项目,其目录结构如下(请原谅 ASCII 艺术):
我目前将所有源文件编译成一个可以使用 CTest 运行的大型可执行文件。我的 CMakeLists.txt 看起来像这样:
我想将每个 .cpp 文件编译成一个单独的可执行文件,并将其作为测试单独添加,以便我可以使用 CTest 正则表达式机制(尤其是 Boost.Test 似乎没有的测试排除)有选择地运行某些测试。但是,当 CMake 从 dir1/dir2 生成 foo/bar 的构建目标时,我遇到了名称冲突。
我的问题是:如何将整个目录树镜像test
到类似的树下,build
以便各种可执行文件之间不再存在名称冲突,以便 CTest 可以全部运行它们?
注意:在源代码树中重命名它们不是一种选择。我想foreach()
对变量做一个${test_cases}
(如this answer中所述),但我无法提取相对目录和文件名,并将它们build/
逐个文件移植到目录中。
更新:最后,我拼凑了这个脚本:
bash - 如何在 CMake 宏的命令中运行命令
我想把文件内容变成一个参数。参数转到正在测试的可执行文件。这就是我所拥有的
我想将参数放在文件中并将其作为输入提供给可执行文件。我想要这样的东西:
或者像这样
或者像这样
以上三个代码都不起作用。当我在 CMake 之外尝试它们时,它们运行良好。但在 CMake 内部它们不起作用。
cmake - 如何将带引号的参数传递给cmake中的add_test?
我正在尝试将参数从 cmake 传递给 gtest 测试套件:
问题是这些参数被引号包围,为什么?它看起来像一个错误,有没有避免它的好方法?
c++ - 带有测试的 CMake 项目
我正在用 cmake 制作一个项目,我想添加测试。这是我第一次使用 cmake,所以我有点走在黑暗中。有没有人有任何关于如何开始这个过程的例子,或者我可以看一个开源项目?
谢谢
cmake - ctest 测试始终启用,我想禁用它们
在 ctest 文档中,我看到以下语句: enable_testing:启用当前目录及以下目录的测试。
如果已运行 ENABLE_TESTING 命令,则此命令将测试目标添加到当前目录。如果 ENABLE_TESTING 尚未运行,则此命令不执行任何操作。测试子系统通过执行带有指定参数的 Exename 来运行测试。Exename 可以是该项目构建的可执行文件,也可以是系统上的任意可执行文件(如 tclsh)。测试将在当前工作目录设置为二叉树中 CMakeList.txt 文件对应目录的情况下运行。
因此,我从当前目录及以上目录中删除了 ENABLE_TESTING,但测试仍在工作。是否默认启用?如何禁用测试?
我想禁用测试,以便我可以在不启动所有测试的情况下运行 ctest。我想一一添加。问题是测试似乎总是被启用。
properties - CTest Cdash:站点下缺少 SubProject xml 元素,仅使用 include(CTest) 提交测试结果
我使用 CMake 构建了一个包含多个独立项目的源代码树来构建每个单独的项目。
重要提示:我没有全局 CMakeLists.txt 文件来执行整个构建,我使用通用脚本(windows (.cmd) 和 unix (.sh))循环所有子项目。我想保持项目的独立性,同时又能够自动构建它们。
另一方面,在 Cdash 中,我希望将所有这些独立项目视为Cdash 子项目,作为更大的独特人工Cdash 项目的一部分。
为了使用 Cdash,我遵循了以下描述的方法: http ://www.cmake.org/Wiki/CMake/Testing_With_CTest
我将此方法命名为 A。
即,我这样做:
然后,我自己做一些测试。
之后,我尝试按照以下页面指示将我的个人项目视为子项目: http ://www.kitware.com/media/html/CdashSubprojects.html
我将此方法命名为 B。
问题是提交给 CDash 的 xml 缺少和SubProject
xmlLabels
元素(xml 滥用者的标签)Sites
,尽管我的 CMakeLists.txt(实际上是我的 CTestConfig.cmake)文件具有以下全局属性设置(我试图把它在两个文件中):
其中 CMAKE_PROJECT_NAME - 当然 - 定义明确。
- 你知道提交的 xml 文件的元素下缺少wjy
SubProject
和元素吗?Labels
Sites
- 方法A和B可以混用吗?
另外,我检查了CTest源,这些全局属性是由这个函数添加的(我从2.8.10获取,无法下载我正在使用的2.8.11的源,所以我希望没有改变它,否则对不起) :
ch->GetCMake()
在我的情况下会以某种方式返回 NULL 吗?
在此先感谢您的帮助。问候。
P.-S.:请不要问我为什么要这样做或那样(除非你有相关的观点要提出),因为-一-没有帮助,-二-如果我这样做,那是因为我有一个很好的理由,这个地方不适合暴露它。我来这里是为了寻求你的帮助,最好是从知道他/她在说什么的人那里寻求帮助,或者明确的最终结果“不,不可能那样做,因为这个”(因为是强制性的 - 请不要强制答案)。
cmake - CppUnit 测试总是通过 Ctest
我正在使用 CMake 开发一个项目,并且刚刚集成了一些 CppUnit 测试。我想使用 CTest,因此我在我的 CMakeLists.txt 文件中使用了 add_test,以便在键入时执行测试make test
。然而,我观察到,在输入 时make test
,它表示所有测试都通过了,即使我做了一个带有微不足道的错误的测试。错误的测试在手动执行(例如 ./my_test)时报告这些错误,但在使用make test
.
这是测试目录中我的 CMakeLists.txt 的内容:
CTest 确实找到了可执行文件,因为为命令设置了错误的路径会使 CMake 抱怨它找不到它们。
make test
输出以下内容:
运行测试...测试项目
100% 测试通过,3 次测试中 0 次失败
我错过了什么?