programing tip

cpp 프로젝트 폴더를 통해 clang-format을 호출하는 방법은 무엇입니까?

itbloger 2020. 12. 1. 07:44
반응형

cpp 프로젝트 폴더를 통해 clang-format을 호출하는 방법은 무엇입니까?


clang-format --style=Webkit각 파일에 대해 개별적으로 실행하는 대신 전체 cpp 프로젝트 폴더에 대해 호출하는 방법이 있습니까?

나는 이것을 사용 clang-format.py하고 vim있지만 이것을 한 번 적용하는 방법이 있다고 가정합니다.


는 어때:

clang-format -i -style=WebKit *.cpp *.h

프로젝트 폴더에 있습니다. -i 옵션은 그것을 제자리에 만듭니다 (기본적으로 형식화 된 출력은 stdout에 기록됨).


불행히도 clang-format을 재귀 적으로 적용하는 방법은 없습니다. *.cpp하위 디렉터리가 아닌 현재 디렉터리의 파일 만 일치합니다. 심지어 **/*작동하지 않습니다.

다행히도 해결책이 있습니다. find명령으로 모든 파일 이름을 가져 와서 파이프합니다. 예를 들어 디렉토리의 모든 파일 .h.cpp파일을 foo/bar/재귀 적 으로 형식화 하려면 다음을 수행 할 수 있습니다.

find foo/bar/ -iname *.h -o -iname *.cpp | xargs clang-format -i

추가 논의는 여기참조 하십시오 .


.clang-format파일이없는 경우 먼저 파일을 만듭니다 .

clang-format -style=WebKit -dump-config > .clang-format

원하는 미리 정의 된 스타일을 선택하거나 결과 .clang-format파일을 편집 합니다.

그런 다음 다음을 실행하십시오.

find . -regex '.*\.\(cpp\|hpp\|cc\|cxx\)' -exec clang-format -style=file -i {} \;

이외의 파일 확장자 cpp, hpp, cccxx정규 표현식에서 사용할 수있는, 그냥 확인으로 구분 할 수 있도록 \|.


최근에 필요한 것을 정확히 수행하는 bash-script를 발견했습니다.

https://github.com/eklitzke/clang-format-all

이것은 clang-format -i코드에서 실행되는 bash 스크립트입니다 .

풍모:

  • 파일 이름에 clang-formatLLVM 버전을 인코딩하는 Ubuntu / Debian 에서 올바른 경로를 찾습니다.clang-format
  • 재귀 적으로 파일 수정
  • C / C ++ 프로젝트에서 사용하는 가장 일반적인 파일 확장자를 감지합니다.

Windows에서는 Git Bash 및 WSL에서 성공적으로 사용했습니다.


Windows 사용자의 경우 : Powershell 3.0을 지원하는 경우 다음을 수행 할 수 있습니다.

Get-ChildItem -Path . -Directory -Recurse |
    foreach {
        cd $_.FullName
        &clang-format -i -style=WebKit *.cpp
    }

참고 1 : 스크립트 전후에 동일한 현재 디렉토리를 사용하려면 pushd .and를 사용하십시오.popd

참고 2 : 스크립트는 현재 작업 디렉토리에서 작동합니다.

Note3 : 이것이 당신에게 정말로 중요하다면 아마 한 줄로 쓸 수 있습니다.


다음 명령을 사용하여 현재 폴더 아래의 모든 목표 C 파일을 재귀 적 으로 포맷합니다 .

$ find . -name "*.m" -o -name "*.h" | sed 's| |\\ |g' | xargs clang-format -i

.bash_profile더 쉽게하기 위해 내에서 다음 별칭을 정의했습니다 .

# Format objC files (*.h and *.m) under the current folder, recursively
alias clang-format-all="find . -name \"*.m\" -o -name \"*.h\" | sed 's| |\\ |g' | xargs clang-format -i"

참고 URL : https://stackoverflow.com/questions/28896909/how-to-call-clang-format-over-a-cpp-project-folder

반응형