GNU를 make Clang의 JSON 컴파일 데이터베이스 파일을 생성하기위한 도구.
주로 비 CMAKE (CMAKE는 이미 컴파일 데이터베이스를 생성) 대형 코드베이스를 목표로합니다. YCM-Generator 및 Bear와 같은 프로젝트에서 영감을 얻지 만 더 빠르지 만 (주로 대규모 프로젝트) (주로 대규모 프로젝트)에서 영감을 얻은 경우 대부분의 경우 컴파일 데이터베이스 파일을 생성하기 위해 정리 된 빌드가 필요하지 않기 때문에 -n / --dry-run 및 -k / --keep-going 과 같은 제작 옵션을 사용하여 컴파일 명령을 추출합니다. 또한 YCM-Generator의 가짜 툴 카닌 접근법보다 더 친숙합니다 .
# pip install compiledb
sh-completion/compiledb.bash 파일의 내용을 예를 들어 .bashrc 파일에 추가하십시오. compiledb Make Build 명령을 실행하는 것 외에도 해당 빌드에 해당하는 JSON 컴파일 데이터베이스 파일을 업데이트하여 Bear와 유사한 명령 줄 인터페이스를 업데이트하는 make Wrapper 스크립트를 제공합니다.
compile_commands.json 파일을 CompiledB의 "Make Wrapper"스크립트를 사용하여 생성하려면 MakeFile all 을 실행합니다.
$ compiledb make compiledb 서브 컨 make GNU Make에 전달 된 모든 옵션/인수를 전달하므로 core/main.mk 를 Main Makefile ( -f flag)로 사용하여 CORE/ compile_commands.json 를 사용하여 build 디렉토리 ( -C 플래그)에서 빌드를 시작할 수 있습니다.
$ compiledb make -f core/main.mk -C build 기본적으로 compiledb make 컴파일 데이터베이스를 생성하고 요청한 실제 빌드 명령 (제조 래퍼 역할)을 실행하면 -n 또는 --no-build 옵션을 사용하여 빌드 단계를 건너 뛸 수 있습니다.
$ compiledb -n make compiledb Base 명령은 빌드 로그 ( make -Bnwk 명령을 사용하여 이상적으로 생성)를 가정하고 해당 JSON 컴파일 데이터베이스를 생성한다고 가정하고 임의의 텍스트 파일 (또는 stdin)에서 comment를 구문 분석하는 데 사용될 수 있도록 설계되었습니다.
예를 들어, build-log.txt 파일에서 컴파일 데이터베이스를 생성하려면 다음 명령을 사용하십시오.
$ compiledb --parse build-log.txt또는 그에 상응하는 :
$ compiledb < build-log.txt또는 심지어 파이프를 만들고 출력을하고 컴파일 데이터베이스를 표준 출력으로 인쇄합니다.
$ make -Bnwk | compiledb -o- 기본적으로 compiledb "arguments"목록 형식에서 JSON 컴파일 데이터베이스를 생성합니다. "Command"문자열 형식은 또한 --command-style 플래그를 사용하여 지원됩니다.
$ compiledb --command-style make 저는이 도구를 탐색하고 연구하기 위해 ASP의 일부 모듈을 색인해야했기 때문에이 도구를 구현했습니다 (YCM- 생성기 및 BEAR와 같은 당시의 현재 도구로 만족도가없는 결과가없는 후). 따라서 YCM-Generator를 재 작업 한 결과 CompiledB/Parser.py의 초기 버전을 초래하고 Docker 컨테이너에서 실행되는 ~ 1 분의 일부 AOSP 모듈에 대해 compile_commands.json 성공적으로 생성 한 다음 다음과 같은 훌륭한 도구와 함께 사용할 수 있습니다.
알아채다:
패치는 항상 환영합니다 :)
GNU GPLV3