Eclipse CDT에서 C ++ 11 / C ++ 0x 지원을 활성화하는 방법은 무엇입니까?


210

이클립스 3.7.1 CDT 1.4.1 GCC 4.6.2

다음은 C ++ 11 코드의 한 예입니다.

auto text = std::unique_ptr<char[]>(new char[len]);

Eclipse 편집기는 다음에 대해 불평합니다.

Function 'unique_ptr' could not be resolved

Makefile 컴파일이 제대로 작동합니다. 이클립스가 이러한 종류의 오류에 대해 불평하지 않게하는 방법은 무엇입니까?


12
최소한 다음과 같아야합니다.std::unique_ptr<char[]>
Cubbi

그것이 확실하지 않다-char []는 char *로 변환 가능하고 unique_ptr <char>는 char *와 같은 char에 대한 포인터이다
Nick

1
하지 않을까요 unique_ptr<char>전화 delete가와 생성 된 이후 잘못 인 new[]?
Dietrich Epp

6
@ 닉 : 아니, 맞아. 당신이 그것을 썼던 방법은 delete당신 delete[] 전화 를 해야 할 때 전화 될 것 입니다. 는 unique_ptr<char>그것으로 삭제됩니다 포인터를 얻고 있다고 가정합니다 delete. unique_ptr<char[]>배열이 delete[]올바르게 삭제 됩니다.
Nicol Bolas 2012

답변:


224

Eclipse 포럼 에서이 기사를 찾았고 방금 다음 단계를 수행했으며 저에게 효과적입니다. Cygwin 설정으로 Windows에서 Eclipse Indigo 20110615-0604를 사용하고 있습니다.

  • 새로운 C ++ 프로젝트 만들기
  • 모든 기본 옵션
  • 생성되면 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "속성"으로 이동하십시오.
  • C / C ++ 빌드-> 설정-> 도구 설정-> GCC C ++ 컴파일러-> 기타-> 기타 플래그. 넣어 -std=c++0x(또는 새로운 컴파일러 버전 -std=c++11끝. ... 대신 GCC C ++ 컴파일러 I의 Cygwin에서 컴파일러도 있습니다
  • C / C ++ 일반-> 경로 및 기호-> 기호-> GNU C ++. "추가 ..."를 클릭 __GXX_EXPERIMENTAL_CXX0X__하고 "이름"에 두 개의 밑줄을 붙여서 붙여넣고 "값"을 비워 두십시오.
  • 적용을 누르고 요청한대로 수행 한 다음 확인을 누릅니다.

Eclipse FAQ에는 Eclipse FAQ / C ++ 11 기능도 설명되어있다 .

이클립스 이미지 설정


2
그래, 효과가 있었다! 그러나 GXX_EXPERIMENTAL_CXX0X에 두 개의 밑줄을 추가하고 추가해야합니다. 그 동안이 내용을 수락하겠습니다
Nick

5
스퓨리어스 편집기 오류가 제거 되었습니까? 컴파일에 아무런 문제가 없으며 새로운 표준 유형이 인식되지만 루프 및 rvalue 참조에 대한 범위에 대한 편집기 구문 오류를 제거 할 수 없습니다 &&.
juanchopanza

7
자연스러운 후속 질문은 이제 다음과 같습니다. 이러한 특정 C ++ 프로젝트 설정을 "C ++ 11 프로젝트"라는 새 Eclipse 프로젝트 템플릿에 저장하여 워크 플로우를 최적화 할 수 있습니까?
Nordlöw

38
참고 : Juno에 대한 답변을 찾는 사람 에게는 작동하지 않습니다 .
Christopher

4
kepler / juno의 경우이 답변 에서 해결책을 찾을 수 있습니다. 그것은 Johan Lundberg의 답변에 대한 편집에 게시되었지만 허용 된 답변을보다 완벽하게하기 위해 여기에 주목합니다.
Inusable Lumière

150

Eclipse CDT 4.4 Luna 및 4.5 Mars에 대한 지침

먼저, 프로젝트를 작성하기 전에 Eclipse 구문 분석기를 구성하십시오.

Window-> Preferences-> C/C++-> Build-> Settings-> Discovery->CDT GCC Build-in Compiler Settings

Command to get compiler specsappend 라는 텍스트 상자에-std=c++11

이제 프로젝트를 만들 수 있으며 구성은 생성 한 프로젝트 종류에 따라 다릅니다.

다음과 같이 작성된 프로젝트의 경우 : 파일-> 새로 작성-> 프로젝트-> C / C ++-> C ++ 프로젝트

생성 된 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 엽니 다

Properties-> C/C++ Build-> Settings-> Tool Settings-> GCC C++ Compiler->Dialect

넣어 -std=c++11라는 제목 텍스트 상자에 other dialect flags선택하거나 ISO C++11으로부터 Language standard드롭 다운.

CMake 프로젝트

이클립스 프로젝트 파일 생성 (프로젝트 내부)

mkdir build
cd build
cmake -G"Eclipse CDT4 - Unix Makefiles" -D CMAKE_BUILD_TYPE=Debug ..

그런 다음 생성 된 디렉토리를 표준 일식 프로젝트로 일식으로 가져옵니다. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 엽니 다

Properties-> C/C++ General-> Preprocessor Include Paths, Marcos etc.->Providers

활성화 CDT GCC Build-in Compiler Settings및 이동보다 높음 Contributed PathEntry Containers(중요)

마지막 공통 단계

다시 컴파일, 재생성 Project-> C/C++ Index및 Eclipse를 다시 시작하십시오.


1
일식을 다시 시작할 필요없이 완벽하게 작동했습니다. 감사합니다.
prasannak

감사합니다. Luna에 대한 다른 대답은 없습니다.
Mohamed El-Nakib

여전히 화성에서 작동합니다. 큰 대답보다 더! 이 답변에 두 번만 투표 할 수 있다면!
Mohamed El-Nakib

감사! 이것은 내가 본 문제에 가장 도움이되는 답변입니다 (4.5)
AturSams

2
C ++ Makefile 프로젝트가있는 Eclipse Neon.3의 경우 추가 -std=c++11할 프로젝트 설정 은 Project Properties -> C/C++ General -> Preprocessor Include Paths, Macros etc. -> Providers [tab] -> CDT GCC Built-in Compiler Settings -> Command used to get compiler specs:입니다. -std=c++11그것에 당신 을 추가하십시오 . 전역 작업 영역 설정에서 제안한대로 설정했지만 새 Makefile프로젝트를 만들 때 위에서 설명한 위치로 복사되지 않았습니다 .
BeeOnRope

112

2016 업데이트 :

현재 GCC 6 ( 변경 ), 기본 C ++ 방언 C ++ 14이다. 즉, 명시 적으로보다 새로운 또는 오래된 방언이 필요하지 않으면 더 이상 이클립스로 아무것도 할 필요가 없습니다.

루나와 화성

이 커뮤니티 위키 섹션에는 Trismegistos의 답변이 포함되어 있습니다.

1. 프로젝트를 작성하기 전에 Eclipse 구문 분석기를 구성하십시오.

창-> 환경 설정-> C / C ++-> 빌드-> 설정-> 감지-> CDT GCC 내장 컴파일러 설정

컴파일러 사양 가져 오기 명령 2 텍스트 상자에 추가합니다 -std=c++14 . 프로젝트 생성, 구성은 생성 한 프로젝트 종류에 따라 다릅니다.

다음과 같이 작성된 프로젝트의 경우 : 파일-> 새로 작성-> 프로젝트-> C / C ++-> C ++ 프로젝트

생성 된 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 엽니 다

속성-> C / C ++ 빌드-> 설정-> 도구 설정-> GCC C ++ 컴파일러-> 방언

넣어 -std=c++14다른 방언 플래그를받을 권리 또는 언어 표준 드롭 다운 메뉴에서 ISO C ++ (11)을 선택 텍스트 상자에.

이제 GXX_EXPERIMENTAL 핵없이이 문제를 해결할 수있는 새로운 방법이 있습니다.

최신 버전 : (현재 Juno 및 Kepler Luna ) :

Juno의 최신 버전에서는 설정이에 있습니다 Project properties -> C/C++ General -> Preprocessor Include Paths, Macros etc. -> tab Providers -> CDT GCC Builtin Compiler Settings ().

구버전 2012/2013 :

  1. C / C ++ 빌드 (프로젝트 설정)에서 전 처리기 포함 경로를 찾고 제공자 탭으로 이동하십시오 . CDT GCC 내장 컴파일러 설정을 제외한 모든 항목을 선택 취소하십시오. 그런 다음 공유 설정 항목 태그를 해제하십시오… 컴파일러 스펙을 얻으려면 Command라는 텍스트 상자에 -std = c ++ 11 옵션을 추가하십시오 .

  2. 경로와 기호로 이동하십시오. 기호 아래에서 기본값 복원을 클릭 한 다음 적용하십시오.


노트:

이클립스는 적용에 대해 까다롭기 때문에 설정 탭을 떠날 때마다해야합니다.

[자기 승진] : 위의 내용에 따라 더 자세한 지침을 작성했습니다. http://scrupulousabstractions.tumblr.com/post/36441490955/eclipse-mingw-builds

사용자 덕분 Nobodyhttps://stackoverflow.com/a/13635080/1149664


3
고맙지 만 c ++ 11 참조를 해결하는 데 도움이되지 않았습니다. 프로그램이 올바르게 컴파일되지만 일식으로 해결할 수 없습니다. "배열"을 확인하면 #ifndef __GXX_EXPERIMENTAL_CXX0X__true를 반환하고 아래 코드는 구문 분석되지 않습니다. __GXX_EXPERIMENTAL_CXX0X__프로젝트 기호에 추가하면 배열이 해결되지만 프로젝트 참조가 엉망이됩니다. 여기서 문제가 무엇입니까?
Halil Kaskavalci

1
나는 그것이 버그라고 생각한다. 나는 이것을 다음과 같이 재현했다 : 새 프로젝트를 연다. c ++ 11 기능을 활성화하십시오. 공용 변수로 임의 클래스를 추가하십시오. 이 랜덤 클래스의 벡터를 만듭니다. 반복자를 가져옵니다. 공개 변수에 액세스하십시오. 내 작업 공간이 손상되었거나 Eclipse에 구문 분석 할 수없는 버그가 있습니다.
Halil Kaskavalci

1
@HalilKaskavalci 나는이 같은 버그를 발견했다. c ++ 11에 편집기를 설정하면 반복자를 확인할 수 없습니다. 그렇지 않으면 std :: unique_ptr을 해결할 수 없습니다. 둘 다 사용하기 때문에 정말 성가시다.
Kian

1
@ 키안 나는 버그를보고했다. bugs.eclipse.org/bugs/show_bug.cgi?id=397027 . 그들이 오류 : 생성하지 않는, 그것은 아주 성가신 내가 부스트 라이브러리를 사용하기 시작
할릴 Kaskavalci

1
나를 위해 일한다! 감사합니다! (귀하의 참고로 했음) 공급자에 -std = c ++ 11을 추가하고 기본값을 기호로 복원했습니다. 기호로 기본값을 복원하면 저장됩니다. 이제 unique_ptr이 해결 중입니다.
Denis Zaikin

20

최신 (Juno) 일식 cdt의 경우 다음이 저에게 효과적 __GXX_EXPERIMENTAL_CXX0X__이었습니다. 선언 할 필요가 없습니다 . 이것은 CDT 인덱서 및 컴파일러의 매개 변수로 작동합니다.

"프로젝트 이름"-> 마우스 오른쪽 버튼으로 클릭-> 속성 :

C / C ++ 일반-> 프리 프로세서 포함 경로, 매크로 등-> "공급자"라는 탭으로 전환하십시오.

  • "Configuration"에 대해 "Release"를 선택한 다음 "debug"를 선택하십시오.

  • 모든 제공자를 끄고 "CDT GCC 내장 컴파일러 설정"을 선택하십시오.

  • "프로젝트 간 설정 공유 (글로벌 공급자)"를 선택 취소하십시오.

  • "컴파일러 스펙을 얻는 명령 :"에서 따옴표없이 "-std = c ++ 11"을 추가하십시오 (따옴표와 함께 작동 할 수도 있음)

  • 적용을 누르고 옵션을 닫습니다

  • 인덱스를 다시 작성

이제 모든 c ++ 11 관련 항목을 인덱서에서 올바르게 해결해야합니다.

win7 x64, sourceforge의 mingwbuilds 프로젝트에서 cdt mingw- w64 gcc 4.7.2가 포함 된 최신 공식 일식


'std :: thread'유형에서와 같이 여전히 컴파일 오류가 발생해도 동일한 오류가 발생합니다.
Scott Stensland

2
u는 새로운 설정으로 한 번 컴파일해야하므로 파서는 std = c ++ 11 플래그가 설정되었음을 "학습"합니다
Andreas

컴파일러 버전에 따라 -std = c ++ 11 대신 -std = c ++ 0x를 추가해야 할 수도 있습니다 (예 : debian
wheezy

15

Eclipse Juno에서 동일한 문제가 발생했습니다. 이 단계는 문제를 해결했습니다.

  • 로 이동하십시오 Project -> Properties -> C/C++ General -> Path and Symbols -> Tab [Symbols].
  • 기호를 추가하십시오 : __cplusplus 201103L

2
Makefile 프로젝트에서도 작동하기 때문에 대답을 받아 들여야합니다!
omikron

@ Jerk31 이것은 Windows에서 실행되는 Eclipse Juno에서 작동하지 않습니다 (나를 위해). 이진이 제대로 작동하더라도 여전히 불필요한 오류가 발생하는 것으로 보입니다. 도와주세요 !!!
overexchange

Windows에서 당신을 도울 수 없어서 정말 죄송합니다.이 OS에서 C ++ 프로젝트를 실행할 기회가 없습니다. 나는 당신에게 최고의 행운을 기원합니다!
Jerome

13

Eclipse CDT Kepler의 경우 std::thread해결되지 않은 기호를 제거하기 위해 일한 것은 다음과 같습니다.

  1. 환경 설정-> C / C ++-> 빌드-> 설정으로 이동하십시오.

  2. 감지 탭을 선택하십시오.

  3. CDT GCC 내장 컴파일러 설정 선택 [공유]

  4. "컴파일러 스펙을 가져 오는 명령 :"필드에 -std = c ++ 11을 추가하십시오.

$ {COMMAND} -E -P -v -dD -std = c ++ 11 $ {입력}

  1. 프로젝트에 대한 확인 및 색인 다시 작성

-std=c++11프로젝트에 Properties/C/C++ Build->Settings->Tool Settings->GCC C++ Compiler->Miscellaneous->Other 플래그를 추가 하는 것만으로는 Kepler에 충분하지 않았지만 Helios와 같은 이전 버전에는 충분했습니다.


이클립스 버전 : 2019-09 R.이 솔루션은 저에게 효과적이지만 그 전에 많은 시간을 보냈습니다. 문제는 빌더 설정 : 프로젝트-> 속성-> C / C ++ 빌드 : '빌더 설정'탭에서 '빌더 유형'에 대해 '내부 빌더'를 선택하십시오.
grekhss

5

나는 아직 언급 할 수 없으므로 내 자신의 대답을 쓰고 있습니다.

__GXX_EXPERIMENTAL_CXX0X__Eclipse Juno 및 CDT 8.x와 관련이 있으며 유효합니다.

이 답변의 일부는 이미 다른 답변에 포함되어 있지만 일관성을 유지하고 싶습니다.

stdc ++ 11을 사용하여 빌드 할 수 있으려면 컴파일러에 특정 플래그를 추가해야합니다. 프로젝트 속성을 통해이를 수행 할 수 있습니다. 프로젝트 속성 수정하려면 RMBProject properties또는 ALT + ENTER. 그런 다음 C / C ++ 빌드-> 설정-> 도구 설정-> GCC C ++ 컴파일러-> 기타-> 기타 플래그. 줄 끝에 -std = c ++ 11을 넣으십시오 .GCC의 경우 다음과 같습니다 -c -fmessage-length=0 -std=c++11. -stdc ++ 11 플래그 컴파일러 (GCC)를 추가하면 __GXX_EXPERIMENTAL_CXX0X__자체적으로 선언 됩니다.

이 시점에서 C ++ 11의 장점을 모두 사용하여 프로젝트를 빌드 할 수 있습니다.

문제는 Eclipse에 오류를 검사하는 자체 파서가 있다는 것입니다. 따라서 Eclipse 편집기에서 여전히 모든 불쾌한 오류가 발생하는 동시에 프로젝트를 빌드하지 않고 실행할 수 있습니다. __GXX_EXPERIMENTAL_CXX0X__프로젝트에 대한 플래그를 명시 적으로 선언하여이 문제를 해결할 수있는 방법이 있습니다 (Carsten Greiner가 말한 것처럼) : C / C ++ General-> Paths and Symbols-> Symbols-> GNU C ++. "추가 ..."를 클릭 __GXX_EXPERIMENTAL_CXX0X__하고 "이름"에 과거 (두 개의 밑줄을 추가하고 추가해야 함)를 클릭 하고 "값"을 비워 두십시오. 이제 첫 번째 답변에 대한 주석으로 다루고 싶은 추가 부분입니다 .C / C ++ General-> Preprocessor Include Path Macros etc.-> Providers 및 Select로 이동하십시오.CDT Managed Build Setting Entries그런 다음 APPLY를 클릭하고 항목 탭으로 돌아갑니다. GNU C ++에서 CDT 관리 빌드 설정 항목이 있어야합니다. 내부에 정의되어 있는지 확인하십시오 __GXX_EXPERIMENTAL_CXX0X__-> 적용 및 색인을 다시 작성하십시오.이 시점에서 괜찮습니다.


3

나도 몇 가지 문제가 있었다 (Ubuntu 13.04 64 비트, g ++-4.8, Eclipse Juno 3.8.1, CDT 6.0.0). 위에서 언급 한 많은 것들이 있습니다. 반복해서 죄송하지만, 추가로 활용에 문제가있었습니다.

std::thread

c ++ 11의 일부로 (링커에 -pthread를 추가하면 문제가 해결됩니다). 어쨌든,이 설정은 정상적으로 작동했습니다.

프로젝트-> 속성-> C / C ++ 빌드-> 설정-> 기타. 추가

-std=c++11

GCC 및 G ++ 컴파일러 용 플래그입니다. 적용을 클릭하십시오.

링커, 같은 창, 기타, 링커 플래그에 대해

-pthread

깃발. 공유 라이브러리 설정, 공유 객체 이름,

-Wl,--no-as-needed

플래그도. 적용을 클릭하십시오.

C / C ++ 일반-> 경로 및 기호-> 기호 TAB, GNU C ++ 선택, 추가

__GXX_EXPERIMENTAL_CXX0X__

(값 없음)

깃발. 적용을 클릭하십시오.

C / C ++ 일반-> 프리 프로세서 포함 경로 ..-> 제공자 탭 : 확인

CDT GCC 내장 컴파일러 설정

"컴파일러 사양을 가져 오는 명령"에

-std=c++11

깃발. 공유를 선택 취소하십시오. 적용을 클릭하십시오.

CDT Managages Build Setting Entry도 점검하십시오. 다른 두 사람의 체크를 해제하십시오. 적용을 클릭하십시오.

GNU C ++ CDT Managages Build Setting Entry 항목으로 돌아가서 추가 된 내용이 표시됩니다.

__GXX_EXPERIMENTAL_CXX0X__

기입.

그게 다야. 코딩 할 때 입력

std::

예를 들어 스레드 클래스를 자동 완성 할 수 있습니다. 빌드가 제대로 작동하고 아무 것도 없어야합니다.

std::system_error'what(): Enable multithreading to use std::thread: Operation not permitted

런타임에.


그것은 Project -> Properties -> C/C++ Build -> Settings -> Miscellaneous나를 위해 일한 단계 였습니다 . 고마워 : D
Jake88

2

나는 그것이 나만인지, 가장 높은 순위의 솔루션이 나를 위해 작동하지 않는지 모르겠다. 내 이클립스 버전은 우분투에서 sudo apt-get install eclipse를 사용하여 설치된 정상적인 일식 플랫폼이지만 방법을 함께 채택하는 솔루션을 찾았다. 가장 높은 순위의 솔루션과 두 번째 솔루션 모두에서 내가 작동하게 한 것은 다음과 같습니다 (C ++ 프로젝트 등의 다른 단계는 단순화를 위해 무시됩니다)

C ++ 프로젝트를 작성하면

(1) C / C ++ 일반-> 경로 및 기호-> 기호-> GNU C ++. "추가 ..."를 클릭하고 GXX_EXPERIMENTAL_CXX0X (두 개의 밑줄을 추가하고 앞에 붙임 )를 "이름"에 붙여넣고 "값"을 비워 두십시오.

(2) C / C ++ 빌드 (프로젝트 설정)에서 전 처리기 포함 경로를 찾아 공급자 탭으로 이동하십시오. CDT GCC 내장 컴파일러 설정을 제외한 모든 항목을 선택 취소하십시오. 그런 다음 공유 설정 항목 태그를 해제하십시오… 컴파일러 사양을 얻으려면 Command라는 텍스트 상자에 -std = c ++ 11 옵션을 추가하십시오.

위의 2 단계와 2 단계 만 수행하면 작동하고 일식은 unique_ptr을 해결할 수 있습니다.이 솔루션이 왜 작동하는지 모르겠습니다. 사람들을 도울 수 있기를 바랍니다.


이것은 또한 나를 위해 일했습니다 (일식 네온). 처음에는 다른 제공자를 선택 해제하지 않았지만 여전히 문제가 발생했지만 "CDT GCC 내장 컴파일러 설정"및 "CDT 사용자 설정"이외의 다른 제공자를 모두 선택 해제했습니다. 감사!
zpon

2

std::unique_ptr파일에 C ++ 11 메모리 헤더를 포함했지만 Eclipse C / C ++는 기호를 인식하지 못합니다 .

GNU C ++ 컴파일러를 사용한다고 가정하면 다음과 같이 수정했습니다.

프로젝트-> 속성-> C / C ++ 일반-> 전 처리기 포함 경로-> GNU C ++-> CDT 사용자 설정 항목

  1. "추가 ..."버튼을 클릭하십시오

  2. 드롭 다운 메뉴에서 "전 처리기 매크로"를 선택하십시오.

    Name: __cplusplus     Value:  201103L
  3. 적용을 누른 다음 확인을 눌러 프로젝트로 돌아갑니다.

  4. 그런 다음 C ++ 인덱스를 다시 빌드하십시오. 프로젝트-> C / C ++ 인덱스-> 다시 빌드


이것은 Eclipse 2018-12에서 나를 위해 유일한 방법입니다. "허용 된"답변 등은 2018-12 년에 더 이상 작동하지 않습니다.
David Steinhauer

1

나를 위해에 이클립스 네온 I 다음 Trismegistos가 위 여기에 대답 , 아직 나는 또한 추가 단계를 추가 :

  • 프로젝트-> 속성-> C ++ 일반-> 프리 프로세서 포함 경로, 매크로 등-> 공급자-> CDT Cross GCC 내장 컴파일러 설정으로 이동하여 "-std = c ++ 11" 플래그를 추가하십시오.

적용 및 확인을 누르십시오.

건배,

사람.


0
  • 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "속성"으로 이동하십시오.
  • C / C ++ 빌드-> 설정-> 도구 설정-> GCC C ++ 컴파일러-> 기타-> 기타 플래그. 다른 플래그 텍스트 상자 끝에 -lm을 입력하고 확인을 클릭하십시오.

이클립스는 어떤 버전입니까?
Braiam

0

해킹이나 더 깨끗한 버전은 Indigo에서 작동하지 않습니다. 해킹이 무시되고 필요한 구성 옵션이 없습니다. 명백한 이유없이, 빌드가 작동하지 않고 유용한 이유를 제공하지 않으면 빌드가 시작되었습니다. 적어도 커맨드 라인에서 재현 가능한 결과를 얻습니다.


0

Eclipse Luna에서 C ++ 14를 지원하려면 다음 단계를 수행하십시오.

  • 이어 C++ General -> Preprocessor Include -> Providers -> CDT Cross GCC Built-in Compiler Settings, "-std = C ++ (14)"추가
  • 이어 C++ Build -> Settings -> Cross G++ Compiler -> Miscellaneous, "-std = C ++ (14)"추가

프로젝트를 다시 색인화하고 결국 Eclipse를 다시 시작하십시오. 예상대로 작동합니다.


0

Mac 에서이 방법으로 해결했습니다. Homebrew를 사용하여 최신 버전의 gcc / g ++를 설치했습니다. 그것들은 / usr / local / include에 포함 된 / usr / local / bin에 도착합니다.

CD를 / usr / local / bin에 넣고 g ++ @ 7에서 g ++로 symlink를 만들면 @ 비트가 성가신 것입니다.

그런 다음 MyProject-> 속성-> C / C ++ 빌드-> 설정-> GCC C ++ 컴파일러로 이동하여 명령을 "g ++"에서 "/ usr / local / bin / g ++"로 변경했습니다. 심볼릭 링크를 만들지 않기로 결정한 경우 더 구체적 일 수 있습니다.

링커에 대해서도 동일한 작업을 수행하십시오.

적용하고 적용하고 닫습니다. 인덱스를 다시 작성하십시오. 한동안, 그것은 엄청난 수의 오류를 보여 주었지만, 나는 인덱스를 만드는 중이라고 생각합니다. 오류를 파악하는 동안 추가 조치없이 모두 사라졌습니다.


Eclipse-> Properties-> C / C ++-> Core Build Toolchains로 이동하여 다른 경로를 가진 도구를 편집 할 수 있는지 확인하지 않고 어떻게 될지 잘 모르겠습니다.


0

std :: optional 및 std :: swap을 사용하는 혼합 C 및 C ++ 프로젝트에 대해 Eclipse C ++ 2019-03을 사용하는 것과 비슷한 문제가있었습니다. 나를 위해 일한 것은 이것입니다. 프로젝트 속성-> C / C ++ 빌드-> 설정-> 도구 설정-> 교차 G ++ 컴파일러에서 기타에서 -std = gnu ++ 17을 제거하고 대신 Dialect-> Other Dialect Flags에 넣으십시오.


0

크로스 컴파일러를 사용할 때 종종 동료가 세 심하게 제작 한 고급 사용자 지정 빌드 시스템을 얻습니다. "기존 코드가있는 Makefile 프로젝트"를 사용하므로 대부분의 다른 답변은 해당되지 않습니다.

프로젝트를 시작할 때 "기존 코드가있는 Makefile 프로젝트"마법사에서 크로스 컴파일러를 사용하도록 지정해야합니다. 성가신 것은 지난 10여 년 동안 해당 마법사의 크로스 컴파일러 버튼이 크로스 컴파일러의 위치를 ​​묻지 않는다는 것입니다. 따라서 C ++ 문제와 크로스 컴파일러 문제를 해결하는 단계에서 위의 @ravwojdyla와 같은 답변에서 언급 한 것처럼 공급자 탭으로 이동해야하지만 선택 해야하는 공급자는 크로스 컴파일러 공급자입니다. 그런 다음 명령 상자에 컴파일러의 전체 경로를 넣고 지원하려는 C ++ 표준에 대해 -std = gnu ++ 11을 추가합니다. 이것은 예상대로 잘 작동합니다.

기존 프로젝트에이를 수행 할 수 있습니다. 인덱서를 다시 실행하면됩니다.

실험 플래그를 추가하거나 __cplusplus의 정의를 재정의하지 않아도됩니다. 유일한 것은 현대 C 코드의 양이 많으면 C 관련 표준 옵션을 넣을 곳이 없다는 것입니다.

그리고 상황이 정말 나빠질 때 Indexer 하위 메뉴에서 해당 명령을 사용하여 파서 로그를 얻는 것이 매우 유익 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.