| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
1 |
# Bazel support |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
2 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
3 |
To get [Bazel](https://bazel.build/) working with {fmt} you can copy the files `BUILD.bazel`, `WORKSPACE.bazel`, `.bazelrc`, and `.bazelversion` from this folder (`support/bazel`) to the root folder of this project. This way {fmt} gets bazelized and can be used with Bazel (e.g. doing a `bazel build //...` on {fmt}). |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
4 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
5 |
## Using {fmt} as a dependency |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
6 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
7 |
The following minimal example shows how to use {fmt} as a dependency within a Bazel project. |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
8 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
9 |
The following file structure is assumed: |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
10 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
11 |
``` |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
12 |
example |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
13 |
├── BUILD.bazel |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
14 |
├── main.cpp |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
15 |
└── WORKSPACE.bazel |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
16 |
``` |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
17 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
18 |
*main.cpp*: |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
19 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
20 |
```c++ |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
21 |
#include "fmt/core.h" |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
22 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
23 |
int main() { |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
24 |
fmt::print("The answer is {}\n", 42); |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
25 |
} |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
26 |
``` |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
27 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
28 |
The expected output of this example is `The answer is 42`. |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
29 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
30 |
*WORKSPACE.bazel*: |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
31 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
32 |
```python |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
33 |
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
34 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
35 |
git_repository( |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
36 |
name = "fmt", |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
37 |
branch = "master", |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
38 |
remote = "https://github.com/fmtlib/fmt", |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
39 |
patch_cmds = [ |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
40 |
"mv support/bazel/.bazelrc .bazelrc", |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
41 |
"mv support/bazel/.bazelversion .bazelversion", |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
42 |
"mv support/bazel/BUILD.bazel BUILD.bazel", |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
43 |
"mv support/bazel/WORKSPACE.bazel WORKSPACE.bazel", |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
44 |
], |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
45 |
# Windows-related patch commands are only needed in the case MSYS2 is not installed. |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
46 |
# More details about the installation process of MSYS2 on Windows systems can be found here: |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
47 |
# https://docs.bazel.build/versions/main/install-windows.html#installing-compilers-and-language-runtimes |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
48 |
# Even if MSYS2 is installed the Windows related patch commands can still be used. |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
49 |
patch_cmds_win = [ |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
50 |
"Move-Item -Path support/bazel/.bazelrc -Destination .bazelrc", |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
51 |
"Move-Item -Path support/bazel/.bazelversion -Destination .bazelversion", |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
52 |
"Move-Item -Path support/bazel/BUILD.bazel -Destination BUILD.bazel", |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
53 |
"Move-Item -Path support/bazel/WORKSPACE.bazel -Destination WORKSPACE.bazel", |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
54 |
], |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
55 |
) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
56 |
``` |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
57 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
58 |
In the *WORKSPACE* file, the {fmt} GitHub repository is fetched. Using the attribute `patch_cmds` the files `BUILD.bazel`, `WORKSPACE.bazel`, `.bazelrc`, and `.bazelversion` are moved to the root of the {fmt} repository. This way the {fmt} repository is recognized as a bazelized workspace. |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
59 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
60 |
*BUILD.bazel*: |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
61 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
62 |
```python |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
63 |
cc_binary( |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
64 |
name = "Demo", |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
65 |
srcs = ["main.cpp"], |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
66 |
deps = ["@fmt"], |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
67 |
) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
68 |
``` |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
69 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
70 |
The *BUILD* file defines a binary named `Demo` that has a dependency to {fmt}. |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
71 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
72 |
To execute the binary you can run `bazel run //:Demo`. |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
73 |
|
|
|
1970-01-01 00:00 |
74 |
|