]> git.proxmox.com Git - ceph.git/blame - ceph/src/zstd/build/cmake/README.md
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / zstd / build / cmake / README.md
CommitLineData
9f95a23c
TL
1# Cmake contributions
2
3Contributions to the cmake build configurations are welcome. Please
4use case sensitivity that matches modern (ie. cmake version 2.6 and above)
5conventions of using lower-case for commands, and upper-case for
6variables.
7
f67539c2
TL
8## How to build
9
10As cmake doesn't support command like `cmake clean`, it's recommended to perform a "out of source build".
11To do this, you can create a new directory and build in it:
12```sh
13cd build/cmake
14mkdir builddir
15cd builddir
16cmake ..
17make
18```
19Then you can clean all cmake caches by simply delete the new directory:
20```sh
21rm -rf build/cmake/builddir
22```
23
24And of course, you can directly build in build/cmake:
25```sh
26cd build/cmake
27cmake
28make
29```
30
31To show cmake build options, you can:
32```sh
33cd build/cmake/builddir
34cmake -LH ..
35```
36
37Bool options can be set to `ON/OFF` with `-D[option]=[ON/OFF]`. You can configure cmake options like this:
38```sh
39cd build/cmake/builddir
40cmake -DZSTD_BUILD_TESTS=ON -DZSTD_LEGACY_SUPPORT=ON ..
41make
42```
43
44### referring
45[Looking for a 'cmake clean' command to clear up CMake output](https://stackoverflow.com/questions/9680420/looking-for-a-cmake-clean-command-to-clear-up-cmake-output)
46
47## CMake Style Recommendations
9f95a23c 48
f67539c2 49### Indent all code correctly, i.e. the body of
9f95a23c
TL
50
51 * if/else/endif
52 * foreach/endforeach
53 * while/endwhile
54 * macro/endmacro
55 * function/endfunction
56
57Use spaces for indenting, 2, 3 or 4 spaces preferably. Use the same amount of
58spaces for indenting as is used in the rest of the file. Do not use tabs.
59
f67539c2 60### Upper/lower casing
9f95a23c
TL
61
62Most important: use consistent upper- or lowercasing within one file !
63
64In general, the all-lowercase style is preferred.
65
66So, this is recommended:
67
68```
69add_executable(foo foo.c)
70```
71
72These forms are discouraged
73
74```
75ADD_EXECUTABLE(bar bar.c)
76Add_Executable(hello hello.c)
77aDd_ExEcUtAbLe(blub blub.c)
78```
79
f67539c2 80### End commands
9f95a23c
TL
81To make the code easier to read, use empty commands for endforeach(), endif(),
82endfunction(), endmacro() and endwhile(). Also, use empty else() commands.
83
84For example, do this:
85
86```
87if(FOOVAR)
88 some_command(...)
89else()
90 another_command(...)
91endif()
92```
93
94and not this:
95
96```
97if(BARVAR)
98 some_other_command(...)
99endif(BARVAR)
100```
101
f67539c2 102### Other resources for best practices
9f95a23c 103
f67539c2 104https://cmake.org/cmake/help/latest/manual/cmake-developer.7.html#modules