programing

Eclipse CDT에서 C++11/C++0x 지원을 활성화하려면 어떻게 해야 합니까?

newsource 2023. 4. 25. 22:26

Eclipse CDT에서 C++11/C++0x 지원을 활성화하려면 어떻게 해야 합니까?

Eclipse 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 컴파일은 정상적으로 작동합니다.어떻게 하면 이클립스가 이런 실수에 대해 불평을 멈출 수 있을까요?

저는 이클립스 포럼에서 이 기사를 발견했고, 그 절차를 따랐을 뿐이고, 제게는 효과가 있습니다.Cygwin 설정이 설치된 Windows에서 Eclipse Indigo 20110615-0604를 사용하고 있습니다.

  • 새 C++ 프로젝트를 만듭니다.
  • 모든 항목에 대한 기본 옵션입니다.
  • 생성했으면 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "속성"으로 이동합니다.
  • C/C++ 드 -> 정 -> 설 -> GCC C++ 파 -> 기 -> 기 -> 기 -> 기 -> 기 -> 기 -> 기 -> c -> c -> c -> c -> c -> 。놓다를 넣으세요-std=c++0x또는 최신 컴파일러 버전의 경우)를 참조하십시오.-std=c++11마지막에는 C++ 컴파일러 대신 Cygwin 컴파일러도 있습니다.
  • C/C++ 반 -> 로 -> 경 -> GNU C++ 를 -> 선 -> GNU C++이다.추가..."를 클릭하고 "추가..."를 붙여넣습니다.'이렇게요'__GXX_EXPERIMENTAL_CXX0X__(두 개의 밑줄을 추가하고 앞에 붙여야 함) "이름"에 입력한 후 "값"을 공백으로 둡니다.
  • Apply(적용)를 누르고 원하는 작업을 수행한 다음 OK(확인)를 누릅니다.

이에 대한 설명은 Eclipse FAQ/C++11 기능에도 나와 있습니다.

이클립스 설정입니다.

이클립스 이미지 설정입니다.

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 specs덧붙입니다.-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이겁니다.

2016을 업데이트하십시오.

gcc 6(변경 사항) 현재 기본 C++ 방언은 C++14입니다.즉, 이보다 더 새롭고 오래된 사투리가 명시적으로 필요하지 않는 한, 더 이상 일식에 대해 아무것도 할 필요가 없습니다.

Luna and Mars의 경우입니다.

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

1. 프로젝트를 만들기 전에 Eclipse 구문 분석기를 구성합니다.

창 -> 환경설정 -> C/C++ -> 빌드 -> 검색 -> CDT GCC 내장 컴파일러 설정입니다.

Command to get compiler specs라는 제목의 텍스트 상자에 을(를)-std=c++14 2. 를 만듭니다. 구성은 만든 프로젝트의 종류에 따라 달라집니다. 2. 프로젝트를 만듭니다. 구성은 만든 프로젝트의 종류에 따라 달라집니다.

다음 이름으로 생성된 프로젝트의 경우: 파일 -> 새로 만들기 -> 프로젝트 -> C/C++ -> C++ 프로젝트입니다.

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

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

놓다를 넣으세요-std=c++14다른 방언 플래그라는 텍스트 상자에 입력하거나 Language 표준 드롭다운에서 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 기본 제공 컴파일러 설정을 제외한 모든 설정을 선택 취소합니다.그런 다음 공유 설정 항목 태그 해제... . 명령 텍스트 상자에 -std=c++11 옵션을 추가하여 컴파일러 사양을 가져옵니다.

  2. 경로와 기호로 이동합니다.기호에서 기본값 복원을 누른 다음 적용하십시오.


주의:

Eclipse는 Apply를 누르는 것에 까다로우므로 설정 탭을 떠날 때마다 이 작업을 수행해야 합니다.

[자체 홍보] 입니다.저는 위의 내용을 바탕으로 저만의 더 자세한 설명을 작성했습니다.http://scrupulousabstractions.tumblr.com/post/36441490955/eclipse-mingw-builds

the the thanks thanks자자덕 thanks thanks thanks thanks thanks 。Nobodyhttps://stackoverflow.com/a/13635080/1149664에서 확인하십시오.

이번(주노) 일식 cdt에는 과 같은 내용이 적용되었으며, 선언할 필요가 없습니다.__GXX_EXPERIMENTAL_CXX0X__CDT 인덱서 및의 매개 변수로 합니다.이는 CDT 인덱서 및 컴파일러의 매개 변수로 작동합니다.

"프로젝트 이름" -> 마우스 오른쪽 버튼 클릭 -> 속성을 선택합니다.

C/C++ 일반 -> 프리프로세서 경로, 매크로 등 포함 -> "공급자" 탭으로 전환합니다.

  • "구성"에 대해 "해제"를 선택합니다(이후 "디버깅").

  • 모든 공급자를 끄고 "CDT GCC 내장 컴파일러 설정"을 선택합니다.

  • "프로젝트 간에 설정 항목 공유(글로벌 공급자)" 선택을 취소합니다.

  • "컴파일러 사양을 가져오는 명령"에서 따옴표 없이 "-std=c++11"을 추가합니다(따옴표와 함께 사용할 수도 있음).

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

  • 색인을 재구성합니다.

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

win7 x 64, 소스 포지에 대한 mingwbuilds 프로젝트에서 cdt mingw-w64 gcc 4.7.2를 사용한 최신 공식 일식입니다.

나도 이클립스 주노에 똑같은 문제가 있었어요다음 단계를 통해 문제가 해결되었습니다.

  • 로 이동합니다.Project -> Properties -> C/C++ General -> Path and Symbols -> Tab [Symbols]...을(를) 참조하십시오.
  • 201103을 사용하여 기호 __cplus를 추가합니다.L입니다.

Eclipse CDT 는 이클립스 CDT를 없애는 데 어떤 도움이 되었습니까?std::thread이겁니다.

  1. 기본 설정 -> C/C++-> 빌드-> 설정으로 이동합니다.

  2. 검색 탭을 선택합니다.

  3. CDT GCC 기본 제공 컴파일러 설정 [공유]를 선택합니다.

  4. 다음과 같이 "컴파일러 사양을 가져오는 명령:" 필드에 -std=c++11을 추가합니다.

${COMMAND} -E -P -v -dD -std=c++11 ${INPUTs}입니다.

  1. 프로젝트의 인덱스를 다시 빌드합니다.

추가하고 있습니다.-std=c++11투사하다Properties/C/C++ Build->Settings->Tool Settings->GCC C++ Compiler->Miscellaneous->Other깃발은 케플러에게는 충분하지 않았지만, 헬리오스와 같은 이전 버전에는 충분했습니다.

아직 코멘트는 드릴 수 없습니다. 그래서 저만의 답변을 쓰고 있습니다.

이렇게 '아까보다'와 관련이 있어요.__GXX_EXPERIMENTAL_CXX0X__Eclipse Juno 및 CDT 8.x. Eclipse Juno CDT 8.됩니다.

이 답변의 일부 부분은 이미 다른 답변에 포함되어 있지만, 저는 일관성을 유지하기를 원합니다.

++11을 사용하여 컴파일러.stdc++11에 대한 특정 플래그를 추가해야 합니다.프로젝트 속성을 통해 이 작업을 수행할 수 있습니다.프로젝트 속성을 수정하려면 다음과 같이 하십시오.RMB요.Project properties아니면요?ALT + ENTER 그런 다음 C/C++ 빌드 -> 설정 -> 도구 설정 -> GCC C++ 컴파일러 -> 기타 플래그.. 이렇게 하다 C/C++ > -> 설 -> 설 -> GCC C++ 컴 -> cc -> cc -> cc -> 기 -> 기 -> 기 C++ 기 -> 기 -> 기 -> 기 기 기 기 。=c++11을 줄의 끝에 놓으면 GCC의 경우 다음과 같이 나타납니다. -std=c++11이면 GCC로 표시됩니다.-c -fmessage-length=0 -std=c++11. -stdc++11 플래그 컴파일러(GCC)를 추가하면 . -stdc++11 플래그 컴파일러(GCC)가 선언됩니다__GXX_EXPERIMENTAL_CXX0X__혼자서요

이때 C++11의 장점을 모두 사용하여 프로젝트를 작성할 수 있습니다.

문제는 Eclipse가 오류를 검사할 수 있는 자체 파서를 가지고 있다는 것입니다. 그래서 Eclipse 편집기에서 여전히 모든 끔찍한 오류가 발생하는 동시에 프로젝트를 빌드하고 실행할 수 있습니다.이 문제를 해결할 수 있는 방법이 요.__GXX_EXPERIMENTAL_CXX0X__C/C++ 일반 -> 경로기호 -> GNU C++ 일반 -> 경로 및 기호 -> GNU C++ "추가..." 및 "과거"를 클릭하십시오.__GXX_EXPERIMENTAL_CXX0X__(두 개의 밑줄을 추가하고 앞에 붙여야 함) "이름"에 입력한 후 "값"을 공백으로 둡니다.이제 첫 번째 답변에 대한 설명에서 추가로 다루고 싶은 부분이 있습니다 C/C++ General -> Preprocessor Include Path Macro 등 -> Providers로 이동하고 Providers를 선택합니다.CDT Managed Build Setting Entries그런 다음 Apply(적용)를 클릭하고 (항목) 탭으로 돌아갑니다. GNU C++ 아래에 CDT Managed Build Setting Entries(CDT 관리 빌드 설정 항목)가 있어야 합니다. 내부에 "Apply"(적용)가 정의되어 있는지 확인합니다. GNU C++ CDT Managed Build Setting Entries입니다.__GXX_EXPERIMENTAL_CXX0X__-> 적용 및 인덱스 재구축이면 이 시점에는 문제가 없습니다.

저도 몇 가지 문제가 있었습니다(Ubuntu 13.04 64비트, g++-4.8, 이클립스 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++ 일반 -> 경로 및 기호 -> 기호 탭, GNU C++를 선택했습니다.

__GXX_EXPERIMENTAL_CXX0X__

(값이 없습니다)

플래그. 적용을 클릭합니다.

C/C++ 일반 -> 프리프로세서 경로를 포함합니다.-> 공급자 탭: 확인합니다.

CDT GCC 기본 제공 컴파일러 설정입니다.

및 "컴파일러 사양을 가져오는 명령"에 대해 다음을 추가합니다.

-std=c++11

플래그. 공유를 선택 취소합니다.적용을 클릭합니다.

CDT Managements Build Setting Entries, 이 항목도 확인하십시오.다른 두 개의 선택을 취소합니다.적용을 클릭합니다.

항목 탭의 GNU C++ CDT 관리 빌드 설정 항목으로 돌아가면 이제 추가된 항목을 볼 수 있습니다.

__GXX_EXPERIMENTAL_CXX0X__

입력해 주세요.

바로 그겁니다.코딩할 때 입력합니다.

std::

이제 스레드 클래스를 자동으로 완료할 수 있습니다. 빌드는 정상적으로 작동하며 스레드 클래스가 없어야 합니다.

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

실행 시 에 표시됩니다.

저만 그런지는 모르겠지만, 최상위 솔루션이 작동하지 않습니다. 이클립스 버전은 Ubuntu에서 sudo apt-get install exclipse를 사용하여 설치된 일반 이클립스 플랫폼입니다. 하지만 상위 솔루션과 두 번째 솔루션에서 함께 방법을 채택한 솔루션을 찾았습니다.작업을 수행하기 위해 수행한 작업은 다음과 같습니다(C++ 프로젝트 생성 등과 같은 다른 단계는 단순성을 위해 무시됩니다).

C++ 프로젝트를 생성하면 됩니다.

(1) C/C++ 일반 -> 경로 및 기호 -> 기호 -> GNU C++입니다."추가..."를 클릭하고 GXX_Experimental_CXX0X(밑줄 두 개 추가 및 앞에 추가)를 "이름"에 붙여 넣은 다음 "값"을 비워 둡니다.

(2) C/C++ Build (프로젝트 설정에서)에서 Preprocessor Include Path를 찾은 후 Providers 탭으로 이동합니다.CDT GCC 기본 제공 컴파일러 설정을 제외한 모든 설정을 선택 취소합니다.그런 다음 공유 설정 항목 태그 해제... . 명령 텍스트 상자에 -std=c++11 옵션을 추가하여 컴파일러 사양을 가져옵니다.

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

Eclipse C/C++는 Eclipse C/C++ 기호를 인식하지 .std::unique_ptrC++11 메모리 헤더를 파일에 포함했더라도 말입니다.

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

프로젝트 -> 속성 -> C/C++ 일반 -> 프리프로세서 포함 경로 -> GNU C++ -> CDT 사용자 설정 항목입니다.

  1. "추가..." 버튼을 클릭합니다.

  2. 드롭다운 메뉴에서 "프리프로세서 매크로"를 선택합니다.

    Name: __cplusplus     Value:  201103L
    
  3. Apply를 누른 다음 OK를 눌러 프로젝트로 돌아갑니다.

  4. 그런 다음 C++ 인덱스를 재구성합니다: 프로젝트 -> C/C++ 인덱스 -> 재구성

Eclipse Neon에서 Trismegistos의 답변을 따라 했지만, 다음 단계를 추가했습니다.

  • 프로젝트 --> 속성 --> C++ 일반 --> 프리프로세서 경로, Macros 등 포함 --> 공급자 --> CDT 교차 GCC 기본 제공 컴파일러 설정으로 이동하여 "-std=c++11" 플래그를 추가합니다.

적용 및 확인을 누릅니다.

건배.

사내.

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

해킹이나 청소기 버전 모두 인디고에게 효과가 없습니다.해킹이 무시되고 필요한 구성 옵션이 없습니다.뚜렷한 이유 없이 빌드가 작동하지 않고 아무런 유용한 이유를 제시하지 못한 후 작동을 시작했습니다.적어도 명령줄에서는 재현 가능한 결과를 얻을 수 있습니다.

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

  • 이 글에서요.C++ General -> Preprocessor Include -> Providers -> CDT Cross GCC Built-in Compiler Settings "-std=c++14", "-std=c++14"를 추가합니다.
  • 이 글에서요.C++ Build -> Settings -> Cross G++ Compiler -> Miscellaneous "-std=c++14", "-std=c++14"를 추가합니다.

프로젝트를 다시 인덱싱한 후 이클립스를 다시 시작합니다.예상대로 작동해야 합니다.

Mac에서는 이렇게 해결했습니다.홈브루를 사용하여 최신 버전의 gcc/g++를 설치했습니다./usr/local/bin에 있고 /usr/local/include에 포함되어 있습니다.

CD로 /usr/local/bin에 들어가서 g++@7에서 @비트가 짜증나기 때문에 그냥 g++로 심볼링크를 만들었습니다.

그런 다음 My Project -> Properties -> C/C++ Build -> Settings -> GCC C++ 컴파일러로 이동하여 "g++"에서 "/usr/local/bin/g++"로 명령을 변경했습니다.심볼 링크를 만들지 않기로 결정한 경우 더 구체적으로 지정할 수 있습니다.

링커에 대해서도 동일한 작업을 수행합니다.

적용 및 적용 후 닫습니다.인덱스를 재구성합니다.한동안은 엄청난 오류를 보였지만, 인덱스를 구축하는 동안이었던 것 같습니다.제가 오류를 찾아내는 동안, 그것들은 더 이상의 조치 없이 사라졌습니다.


Eclipse -> Properties -> C/C++ -> Core Build Toolchains로 이동하여 다른 경로로 편집할 수 있는지 확인하지 않아도 알 수 있습니다.

크로스 컴파일러를 사용할 때, 저는 종종 동료들이 꼼꼼하게 만든 고급 맞춤 제작 시스템을 얻습니다.저는 "기존 코드로 프로젝트 만들기"를 사용하므로 다른 답변은 대부분 해당되지 않습니다.

프로젝트를 시작할 때 마법사에서 "기존 코드로 프로젝트 만들기"에 크로스 컴파일러를 사용하고 있음을 지정해야 합니다.짜증나는 것은 지난 10년 정도 동안 이 마법사의 크로스 컴파일러 버튼이 크로스 컴파일러의 위치를 알려주지 않았다는 것입니다.따라서 C++ 문제와 교차 컴파일러 문제를 해결하는 단계에서 위의 @ravwojdyla와 같은 답변에서 언급한 공급자 탭으로 이동해야 하지만, 선택해야 하는 공급자는 교차 컴파일러 공급자입니다.그런 다음 명령 상자에 컴파일러의 전체 경로를 입력하고 지원하고자 하는 C++ 표준에 대해 -std=syslog++11을 추가합니다.이것은 예상대로 잘 풀립니다.

기존 프로젝트에 대해 이 작업을 수행할 수 있습니다.인덱서를 재실행하기만 하면 됩니다.

실험 플래그를 추가하거나 __cplusplus의 정의를 재정의할 필요가 없었습니다.유일한 것은, 만약 제가 상당한 양의 현대 C 코드를 가지고 있다면, 저는 C 고유의 표준 옵션을 넣을 곳이 없다는 것입니다.

또한 작업이 제대로 진행되지 않을 경우 인덱서 하위 메뉴에서 해당 명령을 사용하여 파서 로그를 가져오는 것이 매우 유용합니다.

C++를 사용한 C++ 혼합 프로젝트와 C++ 혼합 프로젝트에서 Eclipse C++ 2019-03을 사용하는 과 유사한 문제가 .std::optional그리고요.std::swap네, 그렇습니다.

프로젝트에서는 ★★★★★★★★★★★★★★★★★★★★★★★」Properties->C/C++ Build->Settings->Tool Settings->Cross G++ Compiler, 제거하다 제거하다.-std=gnu++17터터에서요Miscellaneous넣어요.Dialect->Other Dialect Flags네, 그렇습니다.

언급URL : https://stackoverflow.com/questions/9131763/how-to-enable-c11-c0x-support-in-eclipse-cdt 입니다.