C++ 및 Bazel

문제 신고 소스 보기 1박 · 7.2 · 7.1 · 7.0 · 6.5 · 6.4

이 페이지에는 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_prefixstrip_include_prefix cc_library 규칙 대상의 인수입니다.