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:
C/C++ 빌드(프로젝트 설정에서)에서 사전 프로세서 포함 경로를 찾은 다음 공급자 탭으로 이동하십시오.CDT GCC 기본 제공 컴파일러 설정을 제외한 모든 설정을 선택 취소합니다.그런 다음 공유 설정 항목 태그 해제... . 명령 텍스트 상자에 -std=c++11 옵션을 추가하여 컴파일러 사양을 가져옵니다.
경로와 기호로 이동합니다.기호에서 기본값 복원을 누른 다음 적용하십시오.
주의:
Eclipse는 Apply를 누르는 것에 까다로우므로 설정 탭을 떠날 때마다 이 작업을 수행해야 합니다.
[자체 홍보] 입니다.저는 위의 내용을 바탕으로 저만의 더 자세한 설명을 작성했습니다.http://scrupulousabstractions.tumblr.com/post/36441490955/eclipse-mingw-builds
the the thanks thanks자자덕 thanks thanks thanks thanks thanks 。Nobody
https://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
이겁니다.
기본 설정 -> C/C++-> 빌드-> 설정으로 이동합니다.
검색 탭을 선택합니다.
CDT GCC 기본 제공 컴파일러 설정 [공유]를 선택합니다.
다음과 같이 "컴파일러 사양을 가져오는 명령:" 필드에 -std=c++11을 추가합니다.
${COMMAND} -E -P -v -dD -std=c++11 ${INPUTs}입니다.
- 프로젝트의 인덱스를 다시 빌드합니다.
추가하고 있습니다.-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_ptr
C++11 메모리 헤더를 파일에 포함했더라도 말입니다.
GNU C++ 컴파일러를 사용한다고 가정하면 다음과 같이 수정했습니다.
프로젝트 -> 속성 -> C/C++ 일반 -> 프리프로세서 포함 경로 -> GNU C++ -> CDT 사용자 설정 항목입니다.
"추가..." 버튼을 클릭합니다.
드롭다운 메뉴에서 "프리프로세서 매크로"를 선택합니다.
Name: __cplusplus Value: 201103L
Apply를 누른 다음 OK를 눌러 프로젝트로 돌아갑니다.
그런 다음 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 입니다.
'programing' 카테고리의 다른 글
태그에서 새 분기를 만들려면 어떻게 해야 합니까? (0) | 2023.04.25 |
---|---|
여러 줄의 명령을 작성하는 방법은 무엇입니까? (0) | 2023.04.25 |
장고는 하루에 10만 명이 넘게 방문했나요? (0) | 2023.04.25 |
체크인을 위해 변경된 파일을 다른 분기로 이동합니다. (0) | 2023.04.25 |
Windows 명령 프롬프트에서 .sh를 실행하는 방법은 무엇입니까? (0) | 2023.04.25 |