【问题标题】:eclipse and boost unit_test_framework failing syntax check using c++eclipse 和 boost unit_test_framework 使用 C++ 语法检查失败
【发布时间】:2011-05-06 16:57:07
【问题描述】:

我有以下问题。 我开始使用 1.40 版的 boost 库进行单元测试。 由于其他一些从事该项目的人而不是所有人都在使用 eclipse,因此该程序必须可以使用 makefile 进行编译。所以我们用cmake来生成一个。 好消息是,测试正在构建并且运行良好。

但问题是,当使用 eclipse(创建了一个 c++ makefile 项目)时,它会抱怨几个语法错误(在源代码视图中)。 比如:
BOOST_AUTO_TEST_CASE( my_test ) { some code }
将被 eclipse 检测为语法错误。在 IDE 中出现所有这些错误消息真的很烦人。因为在第一行之后,some code 块中的几乎每一行都被标记为有语法错误。

所以这是我已经尝试过的:

  • 我在 GNU C++ 路径选项中添加了 `/usr/include/boost/`。 (属性-> C/C++ 常规-> 路径和符号-> 路径)。这通常适用于 FindPkgConfig 在 cmake 文件中包含的其他外部库。以便eclipse中的自动补全能找到正确的类和函数名。
  • 同样的方式直接包含`/usr/include/boost/test/`。
  • 将 `/usr/lib/libboost_unit_test_framework.so.1.40.0` 添加到库列表中。
  • 将 `/usr/lib` 添加到库路径。

所以任何人都有提示如何教 eclipse boost 宏的语法是正确的??

更新
我忘了:
系统是Linux,Eclipse版本是3.6.1,CDT版本是:
版本:1.0.0.201009141542
内部版本号:201009141542

【问题讨论】:

    标签: c++ linux eclipse unit-testing boost


    【解决方案1】:

    我没有解决方案,但可能有提示。 我有一个类似的设置,它工作得很好,直到...... 我记得的唯一相关更改是我更改了测试套件的名称。 所以(可能)在那之后,语法突出显示变得疯狂。 我尝试了索引和刷新,但没有帮助。 我什至看不到宏扩展,因为语法错误阻止它弹出。

    我的猜测是——仍然是——一些索引问题,因为它以前工作过,而且我没有更改任何包含路径。它可以毫无问题地编译,但它会在整个文档中撒上这些黄色的语法错误标记,这真的很烦人。

    但是,这可能不是路径问题,因为它以前对我有用。

    【讨论】:

      【解决方案2】:

      我自己使用 Eclipse Helios 完成了这项工作,它确实对我有用...

      您是否应该添加/usr/include 而不是/usr/include/boost,因为boost 是您程序中使用的包含路径的一部分?

      例如,<boost/unit_test.hpp> 就是 <unit_test.hpp>,如果您还包含 boost 文件夹..

      这是我在 GNU c++ 包含目录下添加的:

      /usr/local/include //this is where I store the boost folder
      /usr/include/c++/4.5.2 //This was needed since not even <map>, <vector> etc would resolve in eclipse.
      

      【讨论】:

      • 包括/usr/include 不会改变任何事情。我试图删除除/usr/include/c++/4.4 之外的所有其他包含(否则会出现与您描述的相同的问题)。但是语法检查并没有抱怨unknown function什么的,而是认为这是一个语法错误。它与我认为的方法声明混淆了。
      • @Blue 你确定更新索引了吗?如果将鼠标悬停在 BOOST_AUTO_TEST_CASE 上,它会扩展宏吗?
      • 是的,它要求重建索引,我说是的。它只是显示消息语法错误(将鼠标悬停在宏名称上)。有趣的是,自动补全也不起作用。
      • @Blue 好的,那么我很抱歉,不知道出了什么问题...也许这是他们在 Helios 中修复的问题(如果您使用的是以前版本的 eclipse)。或者,如果您还没有选择为所有配置和所有语言插入包含目录(它在 GNU c++ 选项卡上的“添加包含目录”上的两个复选框)......可能是 eclipse 正在查看您的文件C模式或类似的东西,可能取决于文件扩展名..但现在我只是在猜测!
      【解决方案3】:

      C++ 的智能感知和自动完成功能几乎不可能在所有情况下都正确。如果 Boost.Test 中使用的许多宏使 Eclipse 感到困惑,那么也许您应该找到一个更干净的单元测试库。我可以推荐Catch,它具有更简洁、更友好的语法,仅包含标题,因此设置起来更容易,并且不依赖于宏。它正在由另一个 SO 用户积极开发。

      【讨论】:

      • 您好 Jalf,感谢您的快速响应,不幸的是,在这种情况下使用 boost 测试套件不是我的决定。主要问题是我认为的{} 部分。普通宏是可以的。添加void 将满足语法检查,但当然代码是无效的。所以也许有机会将这个模板添加到语法检查中。
      • 很公平。我只知道 Visual Studio 对 Boost.Test 的行为也很有趣(它自动缩进错误)
      【解决方案4】:

      我也遇到过这个问题(但在 Mac 系统上)。将 boost 路径添加到 GNU C++ 路径选项后,我重新启动了操作系统,Eclipse 不再将 BOOST_AUTO_TEST_SUITE 标记为错误。

      【讨论】:

      • 提问者已经说过这是他们尝试过的......这不是答案
      猜你喜欢
      • 1970-01-01
      • 2014-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 1970-01-01
      • 2022-01-16
      相关资源
      最近更新 更多