본문 바로가기

building system/bazel

platforms module 사용하기

반응형

platforms과 select 함수

빌드되는 platforms 정보에 따라 서로 다른 옵션을 설정해야 할 경우가 있다.

MODULE.bazel 파일이 다음의 의존성 모듈을 정보를 입력한다.

bazel_dep(name = "platforms", version = "0.0.8")

사용하는 BUILD.bazel 파일에서 다음처럼 사용할 수 있다.
select 함수를 통해서 환경 정보가 만족하면 사용할 구문을 : 이후에 적어주면 된다.

genrule(
    name = "os",
    outs = ["os.txt"],
    cmd = select ( {
        "@platforms//os:linux" : "echo 'linux' > $@",
        "@platforms//os:windows" : "echo 'windows' > $@",    
        "//conditions:default": "echo 'nothing' > $@",
    }),
)

실행 결과는 다음과 같다.

CMD> bazelisk build //src:os
INFO: Analyzed target //src:os (5 packages loaded, 8 targets configured).
INFO: Found 1 target...
Target //src:os up-to-date:
  bazel-bin/src/os.txt
INFO: Elapsed time: 5.827s, Critical Path: 5.28s
INFO: 2 processes: 1 internal, 1 local.
INFO: Build completed successfully, 2 total actions

CMD> bash.exe -c "cat bazel-bin/src/os.txt"
windows

예제 파일

platforms_ex.zip
723 B

728x90
반응형