eclipse и boost unit_test_framework не проходит проверку синтаксиса с помощью c ++ - PullRequest
0 голосов
/ 06 мая 2011

У меня есть следующая проблема. Я начал использовать библиотеку наддува версии 1.40 для модульного тестирования. Поскольку некоторые другие люди, работающие над проектом, и не все из них используют eclipse, программа должна быть скомпилирована с make-файлом. Таким образом, мы использовали cmake для генерации. Хорошо, что тест строится и работает отлично.

Но проблема в том, что при использовании eclipse (созданного проекта make-файла c ++) он жалуется на несколько синтаксических ошибок (в представлении исходного кода). Что-то вроде:
BOOST_AUTO_TEST_CASE( my_test ) { some code }
Eclipse обнаружит синтаксическую ошибку. Это действительно раздражает, когда все эти сообщения об ошибках в IDE. Поскольку после первой строки почти каждая строка в блоке some code также помечена как имеющая синтаксические ошибки.

Итак, вот что я уже пробовал:

  • Я добавил `/ usr / include / boost /` в параметры пути GNU C ++. (Свойства-> 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

Ответы [ 4 ]

2 голосов
/ 19 октября 2012

У меня нет решения, но, возможно, подсказка.У меня была похожая настройка, и она работала идеально до тех пор, пока ... единственное уместное изменение, которое я помню, это то, что я изменил название набора тестов.Поэтому (вероятно) после этого подсветка синтаксиса сошла с ума.Я пробовал индексировать и обновлять, но это не помогло.Я даже не вижу раскрытия макроса, потому что синтаксическая ошибка не позволяет ему всплыть.

Я думаю, что проблема с индексацией все еще остается, потому что она работала раньше, и я не изменил пути включения.Он компилируется без проблем, но он мочится по всем желтым маркерам синтаксических ошибок по всему документу, что действительно очень раздражает.

Однако, вероятно, это не проблема пути, потому что раньше он работал у меня.

1 голос
/ 06 мая 2011

Я только что сделал это сам, используя Eclipse Helios, и он действительно работает для меня ...

Если вы не добавите /usr/include, а не /usr/include/boost, так как boost является частью пути включенияиспользуется в вашей программе?

Например, <boost/unit_test.hpp> - это просто <unit_test.hpp>, если вы также включите в него папку boost ..

Это то, что я добавил в GNU c ++ include каталоги:

/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.
0 голосов
/ 18 июля 2014

У меня тоже была эта проблема (но в системе Mac). Как только я добавил путь к опциям пути GNU C ++, я перезапустил свою операционную систему, и Eclipse больше не помечает BOOST_AUTO_TEST_SUITE как ошибку.

0 голосов
/ 06 мая 2011

Intellisense и автозаполнение для C ++ практически невозможно получить правильно во всех случаях. Если многие макросы, используемые в Boost.Test, сбивают с толку Eclipse, то, возможно, вам следует найти более чистую библиотеку модульных тестов. Я могу порекомендовать Catch , который имеет более чистый и дружелюбный синтаксис, предназначен только для заголовков, поэтому его гораздо проще настроить и он не зависит от макросов. Он активно разрабатывается другим пользователем SO.

...