Bazel c++ 일반적인 C++ 빌드 사용사례_glob()
앞서서 Bazel 프로젝트의 디렉토리 구성에 대해서 간단하게 알아보았다.
이제는 bazel의 일반적인 c++ 빌드 사용 사례 파트를 보면서 한번 분석해볼 예정이다.
https://bazel.build/tutorials/cpp-use-cases?hl=ko
일반적인 C++ 빌드 사용 사례 | Bazel
날짜 비워 두기: BazelCon 2023이 10월 24~25일에 Google 뮌헨에서 열립니다. 자세히 알아보기 이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 일반적인 C++ 빌드 사용 사례 컬렉션을
bazel.build
위의 내용에 대해서 조금 해설을 약간 덧붙이자면
glob을 사용해서 단일 대상에 여러 파일을 포함 할 수 있다고 한다.
말 그대로 library로 사용할 대상에 glob 문법을 통해서 좀 더 편하게 사용할 수 있다는 뜻이다.
예를 들어 나온 파트를 보면,
cc_library(
name = "build-all-the-files",
srcs = glob(["*.cc"]),
hdrs = glob(["*.h"]),
)
source와 hdrs를 glob() 함수를 사용해서 cc파일과 .h 파일을 빌드하라는 내용이다.
library에 hello-bye, hello-nice와 hello-time이 존재한다. 이를 라이브러리파일로 사용하기 위해 빌드를 하려면 BUILD파일을 다음과 같이 작성하면 된다. Bazel은 해당 디렉토리 안의 모든 h와 cc파일을 빌드시킨다.
load("@rules_cc//cc:defs.bzl", "cc_library")
cc_library(
name = "hello-time",
srcs = glob(["*.cc"]),
hdrs = glob(["*.h"]),
visibility = ["//main:__pkg__"],
)
그러면 main 폴더에 들어가서 BUILD파일을 보자.
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library")
cc_library(
name = "hello-greet",
srcs = ["hello-greet.cc"],
hdrs = ["hello-greet.h"],
)
cc_binary(
name = "hello-world",
srcs = ["hello-world.cc"],
deps = [
":hello-greet",
"//lib:hello-time",
],
)
그러면 hello-time, lib를 가져와서 쓰는 것을 볼 수있다.
바이너리 소 파일인 hello-world.cc를 보면
다음과 같이 세 함수를 쓴다음 빌드 후 실행결과를 보면 다음과 같이 모두 사용되는 것을 볼 수 있.
glob 함수의 규칙은 다음 url에서 볼 수 있다.
https://bazel.build/reference/be/functions?hl=ko#glob
함수 | Bazel
날짜 비워 두기: BazelCon 2023이 10월 24~25일에 Google 뮌헨에서 열립니다. 자세히 알아보기 이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 함수 컬렉션을 사용해 정리하기 내 환
bazel.build