>

다음 단계별 안내 를 따랐으며 약간의 혼란을 겪고 나서 코드 : 블록 및 MinGW를 사용하여 컴파일 할 수있는 clang. 좋아, 이제 Clang 모듈을 일식에 추가하고 (왜 네 개가있을 때 하나의 IDE를 갖는지) 컴파일을 시작할 수 있습니다.

표준 라이브러리를 사용하지 않지만 불행히도 이것을 컴파일하려고 할 때 간단한 프로그램을 컴파일 할 수 있습니다 :

#include <iostream>
using namespace std;
int main()
{
    cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    return 0;
}

먼저 나는 이것을 얻는다 :

..\src\test.cpp:9:10: fatal error: 'iostream' file not found

그래서 Mingw 헤더를 포함 경로에 추가합니다;그러면 나는 이것을 얻는다 :

'fatal error: 'bits/c++config.h' file not found'

이상하다. 해당 파일이 '비트 /'가 아닌 경우 MingW가 작동하는 이유는 무엇입니까? 컴파일러에 내장되어 있습니까? 걱정하지 마세요. 구현을 찾아 'bits /'에 파일을 만듭니다.

그런데 clang이 전처리기를 올바르게 구현하지 않았거나 전처리기에 대한 나의 이해가 잘못되었다는 것을 암시하는 이상한 오류를 포함하여 전체 오류가 발생합니다.

C:\Program Files\CodeBlocks\MinGW\lib\gcc\mingw32\4.4.1\include\c++/cwchar:45:26: error: expected value in expression
#if _GLIBCXX_HAVE_WCHAR_H

그리고 더 많은 것들. 그럴까요

#if defined(_GLIBCXX_HAVE_WCHAR_H)

또는

#ifdef _GLIBCXX_HAVE_WCHAR_H?

만일 경우 MinGW 표준 라이브러리가 잘못되었습니다.

gcc를 교체하기 위해 clang을 떨어 뜨릴 수 있다고 가정하고 gnu 표준 라이브러리와 작동하도록 설계되지 않았다고 가정합니다. 증거로 백업 된 확인 또는 거부는 가장 환영받을 것입니다!

그래서 아무도 Windows PC에서 clang을 컴파일하는 가장 확실한 방법이 있습니까? 온라인, 특히 창 관련 정보가 부족합니다.

clang과 LLVM이 내가 읽은 것에서 훌륭하게 들리면 작동하도록 정말로 열심입니다. 도움을 주시면 감사하겠습니다.

감사합니다.


  • 답변 # 1

    clang 를 구축하기위한 몇 가지 지침이 있습니다.  이 페이지 (사이드 바의 "Clang Development"부분에 숨겨져 있습니다 ...). MinGW의 경우 "Unix-like Systems"섹션을 원합니다. 까다로운 부분은 5 단계이며 C ++ 표준 라이브러리의 경로를 설정하는 방법을 알려줍니다. 이것들은 clang/lib/Frontend/InitHeaderSearch.cpp 의 코드에 추가되어야합니다. . 내 컴퓨터에서 이렇게 생겼습니다

    // FIXME: temporary hack: hard-coded paths.
    AddPath("/usr/local/include", System, true, false, false);
    AddPath("c:/msysgit/mingw/bin/../lib/gcc/mingw32/4.4.0/include/c++", System, true, false, false);
    AddPath("c:/msysgit/mingw/bin/../lib/gcc/mingw32/4.4.0/include/c++/mingw32", System, true, false, false);
    AddPath("c:/msysgit/mingw/bin/../lib/gcc/mingw32/4.4.0/include/c++/backward", System, true, false, false);
    AddPath("c:/msysgit/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../include", System, true, false, false);
    AddPath("c:/msysgit/mingw/bin/../lib/gcc/mingw32/4.4.0/include", System, true, false, false);
    AddPath("c:/msysgit/mingw/bin/../lib/gcc/mingw32/4.4.0/include-fixed", System, true, false, false);
    
    

    이들 모두가 필요한지는 확실하지 않습니다!

  • 답변 # 2

    귀하의 MinGW 버전에 따라  (그래서 gcc 버전이 포팅 됨) 헤더가 약간 흩어져있을 수 있습니다 ...

    파일 clang/lib/Frontend/InitHeaderSearch.cpp 에서  많은 하드 코딩 된 경로를 찾을 수 있습니다. 문제는 각각 버전에 따라 다르므로 MinGW 버전이없는 경우 추가하여 자유롭게 추가하십시오 (그리고 cfe-commit에 패치를 게시하여 Clang의 메인 라인에 통합하도록 요청하십시오).

    개인적으로 MinGW/msys에서 사소한 문제만으로 실행합니다 ( : 가있을 때 msys 셸이 입력을 엉켜서 여러 테스트 사례가 실패합니다)  in ...), CodeBlocks에서 사용하려고 시도하지 않았습니다 (명령 줄에 익숙합니다).

    도쿠 미가 MinGW 통합을 지켜보고 있다면 Francois Pichet은 VC ++/MFC 헤더 (예 : 주요 공헌자)와의 호환성에 대한 작업을 이끌고 있으며 @rubenvb는 현재 libc ++에 패치를 적용하려고합니다. Windows에서 작업 (libc ++은 Windows에서 아직 컴파일되지 않습니다). 3 가지 영역은 거의 독립적이며 다른 기술과 지식이 필요합니다.

  • 답변 # 3

    비슷한 문제가있었습니다. Mike Dinsdale의 답변에 의해 지정된 경로의 GCC 4.7의 아날로그를 사용하고 clang 실행 파일에 대한 향후의 모든 호출에 대해 '-isystem'플래그 (rubenvb가 빌드 한 mingw64 배포의 Clang 3.2)로 지정했습니다. 스크립트). 이 디렉토리는system포함 디렉토리로 명시 적으로 지정되므로이 디렉토리에서 생성 될 수있는 모든 잠재적 경고는 자동으로 억제됩니다.

    tl;dr :-isystem플래그는 Clang에서재 컴파일없이시스템포함 디렉토리를 지정합니다

  • 답변 # 4

    Clang은 clang/lib/Frontend/InitHeaderSearch.cpp 파일에 정의 된대로 검색 위치를 하드 코딩했습니다. 댓글 FIXME: temporary hack: hard-coded paths 근처 .

    이 페이지에 대한 메모가 있습니다 : http://clang.llvm.org/get_started.html

    따라서 다른 컴파일러 (MingW)에서 포함 경로를 가져 와서 Clang으로 하드 코딩하면일 수도 있습니다. (Clang의 Windows 지원이 아직 100 %인지 확실하지 않습니다)

  • 답변 # 5

    Windows 10/VS 2017/Clang 4.0.0누락 stdlib.h  C 코드에서. 이것이 내가 해결 한 방법입니다 :

    와이즈 비즈 오픈 . 여기에서 clang을 실행하면 "missing headers"오류가 제거됩니다.

    여전히 작동하지 않으면 Clang이 플랫폼 별 정보를 VS 또는 MinGW로 남겨두기 때문에 실제 헤더 및/또는 라이브러리가 누락 된 것입니다. x86_x64 Cross Tools Command Prompt for VS 2015/2016/2017 로 이동   \Program Files (x86)\Windows Kits\10\Include\ 에 대한 서브 디렉토리 (있는 경우)를 검색하십시오.  그리고 공동. 찾을 수 없으면 최신 stdlib.h 를 설치해야합니다.  Visual Studio (설치 프로그램)로 이동하여수정을 클릭하여 패키지를 추가합니다.

    Windows 10 SDK

  • 이전 ios - uicollectionview는 메시지를 유지하는 위치 위에 셀을 삽입합니다 (예 - messagesapp)
  • 다음 regex - JavaScript에서 숫자를 형식화하기위한 정규식