【问题标题】:codelite unittest++/UnitTest++.h: no such file or directorycodelite unittest++/UnitTest++.h:没有这样的文件或目录
【发布时间】:2019-07-28 03:55:04
【问题描述】:

我正在尝试使用 C++/Codelite 进行单元测试。我从 codelite-plugins 包(Ubuntu 18.04)安装了 UnitTest++ 插件。我也可以看到这个:

$ ls -la /usr/include | grep Unit
drwxr-xr-x  3 root root   4096 Mar  2 11:47 UnitTest++

$ sudo dpkg -l | grep unittest++
ii  libunittest++-dev         2.0.0-2      amd64        unit testing framework for c++, static library and headers
ii  libunittest++2:amd64      2.0.0-2      amd64        unit testing framework for c++, runtime library

所以我在 Codelite 中创建了一个测试项目并添加了这个:

#include <unittest++/UnitTest++.h> // This line and main are auto-created

TEST(SanityTest) 
{
    CHECK_EQUAL(1, 1);
}

int main(int argc, char **argv)
{
    return UnitTest::RunAllTests();
}

现在我希望在按下 CTRL+F5 后得到测试结果。但是当我这样做时,我只会弹出一个窗口说没有测试:

我还注意到,当我转到 Build > Build Project 时,我收到一条错误消息:

致命错误:unittest++/UnitTest++.h:没有这样的文件或目录

我还找到了THIS ANSWER,并根据那里的 answer/cmets 尝试了不同的控制台命令变体,但我总是得到相同的 no such file or directory 错误。

知道我错过了什么吗?

编辑:

按照 Stephen 的 Newell 请求构建日志:

/bin/sh -c '/usr/bin/make -j8 -e -f  Makefile'
----------Building project:[ Test - Debug ]----------
make[1]: Entering directory '/home/callmebob/Documents/workspace-codelite/cpp/Test'
/usr/bin/g++  -c  "/home/callmebob/Documents/workspace-codelite/cpp/Test/main.cpp" -g  -o Debug/main.cpp.o -I. -I/usr/include/unittest++
/home/callmebob/Documents/workspace-codelite/cpp/Test/main.cpp:1:10: fatal error: unittest++/UnitTest++.h: No such file or directory
 #include "unittest++/UnitTest++.h"
          ^~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Test.mk:95: recipe for target 'Debug/main.cpp.o' failed
make[1]: *** [Debug/main.cpp.o] Error 1
make[1]: Leaving directory '/home/callmebob/Documents/workspace-codelite/cpp/Test'
Makefile:4: recipe for target 'All' failed
make: *** [All] Error 2
====2 errors, 0 warnings====

另外,如果我右键单击该项目,转到 Settings > Compiler,我可以看到:

包含的路径 = /usr/include/unittest++

【问题讨论】:

  • 您确认文件确实存在吗?我不使用 ubuntu(或任何基于 apt 的发行版),但它们可能在 /usr/include 之下。另外,请包括完整的编译行(它可能高于您已经提供的错误)。
  • 添加了构建日志。在我的帖子顶部还有输出“ls -la /usr/include”,您可以在其中看到 UnitTest++。它带有大写字母,最后没有 .h。我厌倦了包括没有 .h 但结果相同。
  • 根据您的ls 输出,我的直觉是您代码中的目录名称不正确。尝试将第一行更改为#include &lt;UnitTest++/UnitTest.h&gt;(您可能需要先验证/usr/include/UnitTest++ 的内容)。
  • @StephenNewell:你是对的。最后我不得不把它改成 。从这里,我能够构建,但现在在 CTRL+F5 上我什么也没有得到。似乎我必须执行 CTRL+F9(构建并运行)才能获得结果 - 不知道为什么,但它有效。如果你想添加一个答案,我会接受它,因为你指出了正确的方向。
  • 很高兴它成功了!

标签: c++ unit-testing codelite unittest++


【解决方案1】:

根据您的 ls 输出,您应该将第一行更改为:

#include <UnitTest++/UnitTest++.h>

我不确定为什么您链接到的答案使用小写目录名称;项目文档中的示例都使用大小写混合的目录名称。

【讨论】:

  • 是的,小写字母有点奇怪。我的初始代码也是用小写自动生成的,就像在我的示例中一样。如果我报告错误可能最好。
猜你喜欢
  • 2018-03-09
  • 2017-01-22
  • 2014-12-06
  • 1970-01-01
  • 2022-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-12
相关资源
最近更新 更多