미리 컴파일 된 헤더에서 원래 파일 이름 (파일 경로)과 컴파일 언어를 추출 할 수 있습니까? Clang이 llvm-bcanalyzer
(LLVM 비트 코드 분석기)을 사용하는 것이 가능하다는 것을 알고 있습니다. 그래서 아무도 GCC를 도와 줄 수 있습니까?미리 컴파일 된 헤더의 원본 파일 이름
0
A
답변
2
clang의 경우 프리 프로세서 출력을 구문 분석하기 만하면 원래 PCH 파일 이름을 쉽게 추출 할 수 있습니다. 예에서 header/header.h
은 원본 헤더이고 pch/pch.h.gch
은 미리 컴파일 된 헤더입니다.
예를 들어, 다음과 명령
:clang -E -include pch/pch.h main.cpp
반환은 우리가 원래 PCH 파일 이름을 찾을 수있는 검색 결과 :
…
# 1 "/Users/user/pch_example/header/header.h" 1
…
# 1 "main.cpp" 2
int main() {return 42;}
불행하게도 구문 분석 처리기 출력이 -fpch-preprocess
옵션을 사용하는 경우에도 GCC 우리에게 도움이되지 않습니다. 그래서 내가 발견 한 유일한 방법은 -MD (or -MMD)
같은 의존성 추적 플래그를 사용하여 PCH를 컴파일하는 것입니다.
예를 들어 다음 명령을 호출 할 수 있습니다. gcc-6 -MMD -x c++-header header/header.h -o pch/pch.h.pch
. 이 경우 GCC는 추가적으로 원본 PCH 파일 이름에 대한 경로를 포함하는 종속 파일 pch/pch.h.d
을 생성합니다.
관련 문제
- 1. 미리 컴파일 된 커널
- 2. JSP는 일반적으로 .jsp 파일, 미리 컴파일 된 Java 파일 또는 미리 컴파일 된 클래스 파일로 제공됩니까?
- 3. .css 파일 미리 컴파일
- 4. 자바는 미리 컴파일 된 class 파일
- 5. 미리 컴파일 된 헤더와 미리 컴파일 된 바이너리의 차이점
- 6. 미리 컴파일 된 헤더
- 7. Java 다운로드 파일 (원본 이름)
- 8. 미리 컴파일 된 헤더 오류
- 9. 런타임시 Jsp 파일 미리 컴파일
- 10. 미리 컴파일 된 헤더와 OSX
- 11. 미리 컴파일 된 헤더 제거하기
- 12. 미리 컴파일 된 헤더와 Autotools
- 13. 미리 컴파일 된 헤더 문제
- 14. ProC가있는 미리 컴파일 된 헤더
- 15. 미리 컴파일 된 정적 라이브러리
- 16. 미리 컴파일 된 헤더를 프로젝트에 구현하는 방법
- 17. Android NDK 프로젝트에서 미리 컴파일 된 헤더를 사용하는 방법은 무엇입니까?
- 18. 레일스 : 미리 컴파일 된 특정 애셋 제외
- 19. 표준 라이브러리 헤더 파일 미리 컴파일 - C++
- 20. c - 원본 파일과 헤더로 주 파일 컴파일
- 21. 미리 컴파일 된 패키지를 python3 virtualenv에 설치하십시오.
- 22. 미리 컴파일 된 부스트 라이브러리 (Ubuntu) 패키지
- 23. 미리 컴파일 된 헤더 및 편집 헤더 파일
- 24. GCC를 사용하는 공유 라이브러리 프로젝트의 미리 컴파일 된 헤더 파일
- 25. GNU make를 사용하여 미리 컴파일 된 여러 헤더 파일 만들기
- 26. 미리 컴파일 된 코드/데이터 구조 만들기
- 27. 머리글 파일의 미리 컴파일 된 머리글
- 28. 테이블 헤더의 이름 바꾸기
- 29. 헤더의 이름 바꾸기 R
- 30. 인코딩 된 파일 이름
미리 컴파일 된 헤더는 대부분 (변환 된) .h 파일을 결합합니다. 무엇을 정확하게 추구해야할까요? – kay
미리 컴파일 된 헤더의 원본 인 원래 헤더 이름을 찾으려고했습니다. 문서에 따르면 다음 명령을 사용하여 PHC를 만들 수 있습니다. gcc -x c-header ** test.h ** -o test.h.gch. 내 경우에는 ** test.h ** – vromanik
예 경로를 추출하고 싶습니다. Clang은 그 정보 (Clang PHC 내부 메타 데이터) (http://clang.llvm.org/docs/PCHInternals.html#ast-file-contents)를받을 수 있습니다. – vromanik