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
, cc
및 cxx
정규 표현식에서 사용할 수있는, 그냥 확인으로 구분 할 수 있도록 \|
.
최근에 필요한 것을 정확히 수행하는 bash-script를 발견했습니다.
https://github.com/eklitzke/clang-format-all
이것은
clang-format -i
코드에서 실행되는 bash 스크립트입니다 .풍모:
- 파일 이름에
clang-format
LLVM 버전을 인코딩하는 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
'programing tip' 카테고리의 다른 글
Java에서 리플렉션을 사용하여 내부 클래스를 인스턴스화하는 방법은 무엇입니까? (0) | 2020.12.01 |
---|---|
Pandas DataFrame을 색인별로 정렬하는 방법은 무엇입니까? (0) | 2020.12.01 |
@SuppressWarnings에 "비공개 가능"경고를 표시하지 않으려면 어떤 값을 사용해야합니까? (0) | 2020.12.01 |
Firebase 업데이트 대 세트 (0) | 2020.12.01 |
emacs에서 탭 문자 찾기 (0) | 2020.12.01 |