이 페이지에는 C++ 프로젝트에서 Bazel을 사용하는 데 도움이 되는 리소스가 포함되어 있습니다. 이것은 튜토리얼, 빌드 규칙 및 기타 C++ 빌드 관련 정보를 살펴봤습니다
Bazel 사용
다음 리소스는 C++ 프로젝트에서 Bazel을 사용하는 데 도움이 됩니다.
권장사항
다음은 일반적인 Bazel 권장사항 외에 다음과 같은 내용입니다. 권장사항도 제공합니다.
BUILD 파일
BUILD 파일을 만들 때는 아래 가이드라인을 따르세요.
각
BUILD
파일에는 하나의cc_library
가 포함되어야 합니다. 디렉터리의 컴파일 단위당 규칙 대상을 설정합니다.C++ 라이브러리를 빌드를 동시에 로드할 수 있습니다.
srcs
에 단일 소스 파일이 있는 경우 라이브러리 이름을 해당 C++ 파일의 이름을 지정합니다. 이 라이브러리에는 C++ 파일이 포함되어야 하며 헤더 파일 및 라이브러리의 직접 종속 항목을 포함합니다. 예를 들면 다음과 같습니다.cc_library( name = "mylib", srcs = ["mylib.cc"], hdrs = ["mylib.h"], deps = [":lower-level-lib"] )
파일의 대상
cc_library
개당 하나의cc_test
규칙 대상을 사용합니다. 이름을 타겟[library-name]_test
및 소스 파일[library-name]_test.cc
예를 들어 위에 표시된mylib
라이브러리 타겟의 테스트 타겟은 다음과 같습니다. 다음과 같습니다.cc_test( name = "mylib_test", srcs = ["mylib_test.cc"], deps = [":mylib"] )
경로 포함
include 경로에 대해서는 다음 가이드라인을 따르세요.
모든 포함 경로를 작업공간 디렉터리를 기준으로 만듭니다.
시스템 헤더 외의 헤더에는 따옴표 포함 (
#include "foo/bar/baz.h"
)을 사용합니다. 꺾쇠괄호 (#include <foo/bar/baz.h>
).
(현재 디렉터리) 또는..
과 같은 UNIX 디렉터리 단축키를 사용하지 마세요. (상위 디렉터리)외부를 가리키는 것을 포함해야 하는 기존 또는
third_party
코드의 경우 프로젝트 저장소(예: 외부 저장소에는 프리픽스가 필요한 항목 포함),include_prefix
및strip_include_prefix
인수를cc_library
규칙 대상에서 설정하십시오.
도구 모음 기능
다음 선택적 기능
C++ 프로젝트의 상태를 개선할 수 있습니다. 이러한 포드는
--features
명령줄 플래그 또는 다음의 features
속성
repo
,
package
또는 cc_*
규칙:
parse_headers
기능을 사용하면 C++ 컴파일러를 사용하여 파싱하도록 합니다. 빌드된 타겟과 그 종속 항목의 모든 헤더 파일(컴파일은 아님) 를 사용할 때--process_headers_in_dependencies
플래그. 이렇게 하면 헤더 전용 라이브러리에서 문제를 포착하고 헤더는 독립적이며 구성 순서와는 무관합니다. 포함됩니다.layering_check
기능은 대상에 헤더만 포함하도록 합니다. 사용할 수 있습니다 기본 도구 모음은 이를 지원합니다.clang
를 컴파일러로 사용하는 Linux의 기능입니다.