Eclipse Juno / Kepler / Luna CDT에서 C ++ 11을 활성화하는 방법은 무엇입니까?
편집 : 이것은 실제로 Eclipse Kepler에만 국한되지 않습니다. Eclipse Juno에 대해 동일한 프로세스를 사용해야했습니다. 문제는이 같은 질문에 답하는 다른 게시물에 누락 된 단계가있는 것 같습니다.
C ++ 용 Eclipse Kepler를 사용하고 있는데 C ++ 11을 사용하려고하는데 오류가 발생합니다. 컴파일 할 때 오류가 발생합니다.
오류 : 범위 기반 for 루프는 C ++ 98 모드에서 허용되지 않습니다.
게시물의 지침을 따랐습니다.
Eclipse CDT C ++ 11 / C ++ 0x 지원
Eclipse Juno에 제공된 솔루션이 작동하지 않습니다.
다른 의견은 일식을 다시 시작하고 청소 및 재건을 제안했습니다. 그것은 차이를 만들지 않았습니다.
먼저 컴파일러를 설정하고 CDT의 언어 프로세서를 설정해야하는 두 가지 작업이 있습니다. 사용중인 컴파일러를 언급하지 않았으므로 GCC라고 가정하지만 단계는 다른 컴파일러와 유사합니다. (물론 C ++ 11을 지원하는 컴파일러가 필요합니다.)
컴파일러 설정은 매우 간단합니다.
- 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭합니다.
- C / C ++ 빌드에서 설정을 클릭합니다.
- GCC C ++ 컴파일러에서 기타를 클릭합니다.
- 기타 플래그 상자에서 토큰 목록에 "-std = c ++ 11"을 추가합니다.
- 적용 및 확인을 클릭하십시오.
이 시점에서 프로젝트를 다시 빌드하고 실행할 수 있어야합니다. 그러나 CDT는 여전히 C ++ 11 포함 오류를 표시 할 수 있습니다. 이를 해결할 수있는 방법은 다음과 같습니다.
- 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭합니다.
- C / C ++ 일반에서 "전 처리기 경로, 매크로 포함"을 클릭합니다.
- 공급자 탭을 선택합니다.
- 목록에 "GCC Built in Compiler Settings"와 같은 항목이 있어야합니다. 이 항목을 선택하십시오.
- "글로벌 공급자 사용 ..."옵션을 선택 취소합니다.
- 목록 아래에 "컴파일러 사양을 가져 오는 명령"이라는 상자가 있습니다. 여기에 "-std = c ++ 0x"를 추가합니다.
- 오른쪽의 '위로 이동'버튼을 사용하여 목록 상단의 "GCC 내장 컴파일러 설정"공급자를 이동합니다.
- 적용을 클릭 한 다음 확인을 클릭하십시오.
- Eclipse 작업 공간으로 돌아가서 프로젝트 메뉴, C / C ++ 색인을 선택하고 "해결되지 않은 포함 해결"을 클릭하십시오.
Eclipse Kepler 서비스 릴리스 1에서 C ++ 11 지원 (빌드 ID : 20130919-0819)
최신 릴리스 Eclipse Kepler SR1에서는 -std = c ++ 11 만 추가하면됩니다.
- 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭하십시오.
- 로 이동 한 C / C ++ 일반 및 처리기는 경로, 매크로 등 포함
- 공급자 탭을 선택합니다.
- 추가 -std = C (11) ++ 에 대한 명령은 컴파일러 사양을 얻을 수 있습니다 :
- 변경 사항을 적용하면 인덱스가 자동으로 생성됩니다.
"명령은 컴파일러 사양을 얻을 수 있습니다" - 라인이 같아야합니다 :
${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11
CDT 8.3 ( Kepler 업데이트로 사용 가능 )부터 빌드 설정에 새로운 언어 옵션이 있습니다.
http://wiki.eclipse.org/CDT/User/NewIn83#Build
Eclipse Kepler를 사용하고 수정하기 위해 다음을 수행했습니다.
1-Project >> Proprietes >> C / C ++ Build :: 설정을 마우스 오른쪽 버튼으로 클릭
2-GCC G ++ 컴파일러로 이동 >> 기타 >> 기타 플래그
i then added -std=c++11
hit apply and ok
내 문제가 해결되었습니다!
도움이 되었기를 바랍니다.
여기서 eclipse indigo 및 cdt 8.0.2를 실행합니다. 나는 모든 가이드를 따랐지만 std :: unique_ptr과 같은 것을 찾기 위해 전처리기를 직접 정의해야했습니다. 포함 파일 "메모리"가이를 확인합니다. 프로젝트 속성의 "C ++ 일반"에있는 "경로 및 기호"아래의 "기호"탭에서 __cplusplus를 201103L로 설정합니다.
프로젝트 속성-> C / C ++ 빌드-> 설정-> 도구 설정 (GCC C ++ 컴파일러-> Dialect)에 방언 플래그 "-std = c ++ 11"을 추가하면 위에서 언급 한 설정을 제외하고 Eclipse Kepler의 문제가 해결되었습니다.
I'm using Eclipse Luna and there is no "Tool Settings" under C/C++ Build -> Settings. I DID add -std=c++11 to the compiler specs command line under "C/C++ General -> Preprocessor Includes -> Providers" as suggested. But that still did not satisfy my indexer's ability to resolve emplace().
So I looked in the header file for and found that the emplace functions are dependent on __cplusplus >= 201103L. So I just added the preprocessor symbol "__cplusplus" and gave it the value 201103.
Kinda hackish but the indexer is happy. (And makefiles define my build flags, not the eclipse project)
The solution provided by MrEricSir only works after having the latest Eclipse Oxygen CDT installed. It doesn't work for me with Mars CDT.
참고URL : https://stackoverflow.com/questions/17457069/how-to-enable-c11-in-eclipse-juno-kepler-luna-cdt
'developer tip' 카테고리의 다른 글
Vim에서 주석의 글꼴 색상 변경 (0) | 2020.09.15 |
---|---|
JavaScript 객체의 src 및 id를 사용하여 JQuery로 새 img 태그를 만드는 방법은 무엇입니까? (0) | 2020.09.15 |
Android Studio를 사용한 디버깅이 "Waiting For Debugger"에서 영원히 멈춤 (0) | 2020.09.15 |
Rails 3 : Ajax 호출에서 "redirect_to"하는 방법? (0) | 2020.09.15 |
노드 목록에 forEach가없는 이유는 무엇입니까? (0) | 2020.09.15 |