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