-
Notifications
You must be signed in to change notification settings - Fork 3
/
cmake.cmsl
214 lines (183 loc) · 4.88 KB
/
cmake.cmsl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
/** \brief The builtin cmake namespace.
*/
namespace cmake {
/** \brief A list of directories specifying a search path for CMake modules to
* be loaded by the include() od find_package() before checking the default
* modules that come with CMake.
*
* By default it is empty, it is intended to be set by the project.
*/
list<string> module_path;
/** \brief An enum describing C++ standard.
*/
enum cxx_standard_value
{
cpp_11,
cpp_14,
cpp_17,
cpp_20
};
/** \brief Value for C++ standard that is going to be globally used.
*/
cxx_standard_type cxx_standard;
/** \brief Checks whether scripts are run by a proper CMake version.
*
* \param v The minimum CMake version.
*/
void minimum_required(version v);
/** \brief A message printing function.
*
* Prints \p msg to the standard output stream.
*
* \param msg The message to be printed.
*/
void message(string msg);
/** \brief A warning printing function.
*
* Prints \p msg to the standard error stream. Configuration continues.
*
* \param msg The message to be printed.
*/
void warning(string msg);
/** \brief An error printing function.
*
* Prints \p msg to the standard error stream. Configuration continues, but
* prevents generation.
*
* \param msg The message to be printed.
*/
void error(string msg);
/** \brief A fatal error printing function.
*
* Prints \p msg to the standard error stream. Configuration stops.
*
* \param msg The message to be printed.
*/
void fatal_error(string msg);
/** \brief CXX compiler identificator.
*/
enum cxx_compiler_id
{
clang
};
/** \brief CXX compiler information.
*/
class cxx_compiler_info
{
cxx_compiler_id id;
};
/** \brief CXX compiler information getter.
*
* \return Information about cxx compiler that cmake is running for.
*/
cxx_compiler_info get_cxx_compiler_info();
/** \brief Adds the \p exe to installation rules.
*/
void install(executable exe);
/** \brief Adds the \p exe to installation rules.
*
* \param exe The executable to be installed.
* \param destination Destination within the installation directory, where the
* \p exe should be installed.
*/
void install(executable exe, string destination);
/** \brief Adds the \p lib to installation rules.
*/
void install(library lib);
/** \brief Adds the \p lib to installation rules.
*
* \param lib The library to be installed.
* \param destination Destination within the installation directory, where the
* \p lib should be installed.
*/
void install(library lib, string destination);
/** \brief Enables testing and ctest. Should be called in the root script.
*/
void enable_ctest();
/** \brief Registers a test executable. Test name is the same as the \p exe
* name.
*/
void add_test(executable exe);
/** \brief Describes visibility.
*
* Used in e.g. library::link_to() and library::include_directories().
*/
enum visibility
{
interface,
private,
public
};
/** \brief The root source directory getter.
*/
string root_source_dir();
/** \brief The current binary directory getter.
*/
string current_binary_dir();
/** \brief The current source directory getter.
*/
string current_source_dir();
/** \brief Creates a custom command.
*
* \param command The command to be executed.
* \param output Output file that other targets can depend on.
*/
void add_custom_command(list<string> command, string output);
/** \brief Creates the given directory.
*
* \param dir The directory path to be created.
*/
void make_directory(string dir);
/** \brief Sets an old style variable.
*
* Equivalent of `set(name ${value})` in old CMake.
*
* \param name The name of the variable to be set.
* \param value The value of the variable to be set.
*/
void set_old_style_variable(string name, string value);
/** \brief Gets an old style variable.
*
* Equivalent of `${value}` in old CMake.
*
* \param name The name of the variable to be set.
* \return The value of the variable.
*/
string get_old_style_variable(string name);
/** \brief En enumaration for possible operating systems.
*/
enum system_id
{
windows,
unix
};
/** \brief A system information aggregator.
*/
struct system_info
{
system_id id; ///< The id of the system.
};
/** \brief A system information getter.
*
* Gathers information about the system that CMake is run on.
*
* \return Collected system info.
*/
system_info get_system_info();
/** \brief Add a target with no output so it will always be built.
*
* \param name The name of the new target.
* \param command The command to be executed at build time.
*/
void add_custom_target(string name, list<string> command);
/** \return Full path to ctest command installed with CMake.
*/
string ctest_command();
/** \brief Adds target specified in a file written in declarative extension.
*
* \param file_path The path of file to add.
* \return An object of unspecified type. The type of the object depends on the
* target specified in the file.
*/
unspecified_type add_declarative_file(string file_path);
}