2011-05-06 3 views
0

다음과 같은 문제가 있습니다. 단위 테스트를 위해 부스트 라이브러리 버전 1.40을 사용하기 시작했습니다. 프로젝트에서 작업하는 사람들 중 일부는 이클립스를 사용하지 않기 때문에 프로그램은 makefile로 컴파일 할 수 있어야합니다. 그래서 우리는 하나를 생성하기 위해 cmake를 사용했습니다. 좋은 점은 테스트가 잘 진행되고 있다는 것입니다.이클립스 및 boost unit_test_framework가 C++을 사용하는 구문 검사에 실패했습니다

하지만 문제는 eclipse (C++ makefile 프로젝트 생성)를 사용할 때 소스 코드보기에서 몇 가지 구문 오류가 발생한다는 것입니다. 다음과 같음 :
BOOST_AUTO_TEST_CASE(my_test) { some code }
이클립스에서 구문 오류로 감지됩니다. IDE에서 이러한 모든 오류 메시지가 발생하는 것은 정말 귀찮은 일입니다. 첫 번째 줄 이후에 some code 블록의 거의 모든 줄에는 구문 오류가있는 것으로 표시되기 때문에. 그래서 여기

내가 이미 뭘하려 :

  • 내가 GNU C에`는/usr/포함/부스트 /`추가 ++ 경로 옵션을. (속성 -> C/C++ 일반 -> 경로 및 기호 -> 경로). 이것은 일반적으로 cmake 파일의 FindPkgConfig에 포함 된 다른 외부 라이브러리에 대해 작동합니다. 따라서 Eclipse에서 자동 완성 기능을 사용하면 올바른 클래스와 함수 이름을 찾을 수 있습니다.
  • 같은 방법으로`/ usr/include/boost/test /`가 직접 포함되었습니다.
  • `/ usr/lib/libboost_unit_test_framework.so.1.40.0`을 라이브러리 목록에 추가합니다.
  • `/ usr/lib`를 라이브러리 경로에 추가합니다.

그래서 누구든지 부스트 매크로의 구문이 올바른지 eclipse를 가르치는 방법에 대한 힌트를 얻었습니까 ??

업데이트 :
내가 잊었 :
시스템은 리눅스이며, 이클립스 버전은 3.6.1이며, CDT 버전은 다음과 같습니다
버전 : 1.0.0.201009141542
빌드 ID : 201,009,141,542

답변

0

인텔리 및 자동 완성 모든 경우에 C++을 사용하는 것은 거의 불가능합니다. Boost.Test에서 사용되는 많은 매크로가 Eclipse를 혼동한다면, 아마 당신은 더 깨끗한 단위 테스트 라이브러리를 발견해야 할 것이다. 더 깨끗하고 친숙한 구문을 사용하는 Catch을 추천 할 수 있습니다. 헤더 만 사용 가능하므로 설정하기가 훨씬 쉬우 며 매크로를 사용하지 않습니다. 다른 SO 사용자가 적극적으로 개발 중입니다. 난 그냥 포함 경로의 자신 이클립스 헬리오스를 사용하여, 그것은 실제로 당신이 boost 이후, /usr/include하지 /usr/include/boost 추가 ... 나를 위해

야해 작동 하는가입니다 일부 프로그램에서

+0

HI Jalf, 빠른 응답을 주셔서 감사합니다. 불행히도 부스트 테스트 슈트를 사용하는 것이 내 결정이 아닙니다. 가장 큰 문제는'{}'부분입니다. 일반 매크로는 정상입니다. 'void '를 추가하면 문법 검사를 만족시킬 수 있지만 물론 코드는 유효하지 않습니다. 그래서 아마도이 템플릿을 문법 검사에 추가 할 기회가있을 것입니다. –

+0

충분합니다. 나는 Visual Studio가 Boost.Test (우발적 인 자동 삽입)로 재미 있다고 알고 있습니다.'/ usr/include'를 포함하여 – jalf

1

을 사용 했습니까?

/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

은 것을 변경하지 않습니다. '/ usr/include/C++/4.4'를 제외하고 다른 모든 include를 제거하려고했습니다 (그렇지 않으면 설명 된대로 동일한 문제가 발생합니다). 그러나 구문 검사는 'unknown function'이나 무엇인가 불평하지 않지만 구문 오류라고 생각합니다. 그것은 내가 생각하는 메소드 선언과 혼동한다. –

+0

@Blue 인덱스를 업데이트 했습니까? BOOST_AUTO_TEST_CASE 위로 마우스를 가져 가면 매크로가 확장됩니까? – Max

+0

예, 인덱스를 다시 작성하라는 메시지가 표시되고 예라고 말했습니다. 그것은 단지 메시지 구문 오류를 보여줍니다 (매크로 이름 위에 마우스를 올려 놓는 동안). 흥미로운 것은 자동 완료가 작동하지 않는다는 것입니다. –

2

나는 해결책을 가지고 있지만하지 않는 : 당신이 aswell 부스트 폴더를 ... 포함하는 경우 예를 <boost/unit_test.hpp>를 들어

이 내가 디렉토리를 포함 ++ GNU C를 아래에 추가 한 내용을 단순히 <unit_test.hpp>입니다 아마 힌트. 나는 비슷한 설정을했고 완벽하게 작동했습니다 ... 내가 기억하는 유일한 변화는 테스트 스위트의 이름을 변경했다는 것입니다. 그 후 아마도 (아마도) 구문 강조가 미쳐 버렸을 것입니다. 색인 생성 및 새로 고침을 시도했지만 도움이되지 않았습니다. 구문 오류로 인해 매크로 확장이 표시되지 않을 수 있습니다.

이전에 작동했는데 포함 경로를 변경하지 않았으므로 색인 생성 문제가 있습니다. 문제없이 컴파일되지만 문서 전체에 노란색 구문 오류 마커가 소변을 보니 정말 짜증이났습니다.

그러나 이전에는 저에게 도움이 되었기 때문에 경로 문제가 아닙니다.

0

이 문제도있었습니다 (하지만 Mac 시스템에서). GNU C++ 경로 옵션에 부스트 경로를 추가하고 나면 운영 체제를 다시 시작했고 Eclipse는 BOOST_AUTO_TEST_SUITE에 더 이상 오류를 표시하지 않습니다.

+0

질문자는 이미 그들이 시도한 바를 말했습니다 ... 이것은 대답이 아닙니다. –

관련 문제