libpurple/reference/tut_c_plugins.md

Mon, 31 Mar 2025 01:43:20 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Mon, 31 Mar 2025 01:43:20 -0500
changeset 43213
078c9e626db9
parent 42988
c2357ee36551
permissions
-rw-r--r--

Add Pango to the gobject introspection and gi-docgen for libpurple

Testing Done:
Called in the turtles and verified the warnings were gone.

Reviewed at https://reviews.imfreedom.org/r/3948/

41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
1 Title: C Plugin Tutorial
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
2 Slug: c-plugin-tutorial
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
3
42875
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
4 C plugins are native plugins. They have complete access to all of the API,
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
5 and can do basically whatever they want.
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
6
42875
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
7 # Getting Started
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
8
42875
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
9 To develop a plugin you need to have the libpurple source code or development
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
10 headers for your platform. It is generally a good idea to compile against the
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
11 same version of libpurple that you are running. You may also want to develop
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
12 against the code in our Mercurial repository if you need to use a new feature.
10468
a991d3324b36 [gaim-migrate @ 11750]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
13
42875
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
14 # An Example
10468
a991d3324b36 [gaim-migrate @ 11750]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
15
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
16 I know every tutorial has a hello world, so why should libpurple be any
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
17 different?
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
18
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
19 ```c
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
20 #include <purple.h>
10468
a991d3324b36 [gaim-migrate @ 11750]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
21
40933
60f4b2a6d66a Update the C plugin tutorial to use the gplugin macros
Gary Kramlich <grim@reaperworld.com>
parents: 39413
diff changeset
22 static GPluginPluginInfo *
42782
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
23 hello_world_query(GError **error) {
36796
ebb632962d4e Updated C-HOWTO.dox according to the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36793
diff changeset
24 const gchar * const authors[] = {
42782
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
25 "Author Name <aname@example.com>",
36796
ebb632962d4e Updated C-HOWTO.dox according to the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36793
diff changeset
26 NULL
ebb632962d4e Updated C-HOWTO.dox according to the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36793
diff changeset
27 };
ebb632962d4e Updated C-HOWTO.dox according to the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36793
diff changeset
28
ebb632962d4e Updated C-HOWTO.dox according to the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36793
diff changeset
29 return purple_plugin_info_new (
42782
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
30 "id", "hello_world",
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
31 "name", "Hello World!",
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
32 "version", "1.0",
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
33 "category", "Example",
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
34 "summary", "Hello World Plugin",
42875
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
35 "description", "Creates a \"Hello World!\" notification when loaded",
42782
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
36 "authors", authors,
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
37 "website", "http://helloworld.tld",
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
38 "abi-version", PURPLE_ABI_VERSION,
36796
ebb632962d4e Updated C-HOWTO.dox according to the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36793
diff changeset
39 NULL
ebb632962d4e Updated C-HOWTO.dox according to the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36793
diff changeset
40 );
ebb632962d4e Updated C-HOWTO.dox according to the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36793
diff changeset
41 }
10468
a991d3324b36 [gaim-migrate @ 11750]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
42
a991d3324b36 [gaim-migrate @ 11750]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
43 static gboolean
42782
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
44 hello_world_load(GPluginPlugin *plugin, GError **error) {
42875
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
45 PurpleNotification *notification = NULL;
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
46 PurpleNotificationManager *manager = NULL;
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
47
42988
c2357ee36551 Replace Purple.Notification.new_generic with Purple.Notification.new
Gary Kramlich <grim@reaperworld.com>
parents: 42931
diff changeset
48 notification = purple_notification_new(NULL, "Hello World!");
42875
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
49 purple_notification_set_subtitle(notification,
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
50 "This is the Hello World! plugin :)");
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
51
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
52 manager = purple_notification_manager_get_default();
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
53 purple_notification_manager_add(manager, notification);
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
54 g_clear_object(&notification);
10468
a991d3324b36 [gaim-migrate @ 11750]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
55
a991d3324b36 [gaim-migrate @ 11750]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
56 return TRUE;
a991d3324b36 [gaim-migrate @ 11750]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
57 }
a991d3324b36 [gaim-migrate @ 11750]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
58
36796
ebb632962d4e Updated C-HOWTO.dox according to the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36793
diff changeset
59 static gboolean
42782
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
60 hello_world_unload(GPluginPlugin *plugin, gboolean shutdown, GError **error) {
36796
ebb632962d4e Updated C-HOWTO.dox according to the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36793
diff changeset
61 return TRUE;
10468
a991d3324b36 [gaim-migrate @ 11750]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
62 }
a991d3324b36 [gaim-migrate @ 11750]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
63
40933
60f4b2a6d66a Update the C plugin tutorial to use the gplugin macros
Gary Kramlich <grim@reaperworld.com>
parents: 39413
diff changeset
64 GPLUGIN_NATIVE_PLUGIN_DECLARE(hello_world)
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
65 ```
10468
a991d3324b36 [gaim-migrate @ 11750]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
66
42875
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
67 Okay, so what does all this mean? We start off by including `purple.h`. This
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
68 file includes all the libpurple header files.
10468
a991d3324b36 [gaim-migrate @ 11750]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
69
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
70 `hello_world_query`, `hello_world_load` and `hello_world_unload` are functions
42875
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
71 that must be implemented in every plugin. These functions are named according
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
72 to the value passed to `GPLUGIN_NATIVE_PLUGIN_DECLARE` which is described
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
73 below.
10468
a991d3324b36 [gaim-migrate @ 11750]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
74
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
75 `hello_world_query` is called when the plugin is queried by the plugin system,
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
76 and returns various information about the plugin in form of a newly created
42875
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
77 instance of [class@GPlugin.PluginInfo] or a subclass. For a list of all
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
78 available properties, see [ctor@PluginInfo.new].
10468
a991d3324b36 [gaim-migrate @ 11750]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
79
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
80 If anything should go wrong during the query you can return an error by using
42875
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
81 [func@GLib.set_error] on the `error` argument.
40933
60f4b2a6d66a Update the C plugin tutorial to use the gplugin macros
Gary Kramlich <grim@reaperworld.com>
parents: 39413
diff changeset
82
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
83 `hello_world_load` is called when the plugin is loaded. That is the user has
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
84 enabled the plugin or libpurple is loading a plugin that was previously loaded.
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
85 You can initialize any variables, register dynamic types, and so on in this
42875
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
86 function. In this plugin we'll just use it to create and display a
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
87 notification. Just like `hello_world_query` if there are any errors that arise,
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
88 you can call [func@GLib.set_error] on the `error` argument and return `FALSE`.
36905
d256e7a2ec4c Changed dox files to xml files for gtk-doc, and included them in the top-level XMLs.
Ankit Vani <a@nevitus.org>
parents: 36900
diff changeset
89
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
90 `hello_world_unload` is called when the plugin is unloaded. That is, when the
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
91 user has manually unloaded the plugin or the program is shutting down. We can
42875
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
92 use it to wrap up everything, and free our variables. If the program is
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
93 shutting down, the `shutdown` argument will be `TRUE`. Again, if there are any
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
94 errors, you can call [func@GLib.set_error] on the `error` argument and return
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
95 `FALSE`.
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
96
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
97 Finally we have `GPLUGIN_NATIVE_PLUGIN_DECLARE()`. It is a helper macro that
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
98 makes creating plugins easier. It has a single argument which is the prefix
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40933
diff changeset
99 used for the `_query`, `_load`, and `_unload` functions.
42782
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
100
42875
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
101 # Building
42782
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
102
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
103 You may want to compile your plugin by using your libpurple from the packages
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
104 on your system. You can easily do this with meson build system. Let's say
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
105 you've already wrote the hello world plugin and saved it as `hello_world.c`.
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
106 Create a file named `meson.build`:
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
107
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
108 ```python
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
109 project('hello_world_plugin', 'c')
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
110
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
111 libpurple_dep = dependency('purple-3')
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
112
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
113 PURPLE_PLUGINDIR = libpurple_dep.get_pkgconfig_variable('plugindir')
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
114
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
115 library('libhelloworld', 'hello_world.c',
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
116 c_args : [
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
117 '-DG_LOG_USE_STRUCTURED',
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
118 '-DG_LOG_DOMAIN="PurplePlugin-HelloWorld"'
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
119 ],
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
120 dependencies : [libpurple_dep],
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
121 name_prefix : '',
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
122 install : true,
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
123 install_dir : PURPLE_PLUGINDIR)
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
124 ```
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
125
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
126 This `meson.build` file will build your plugin and install it into the right
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
127 location for libpurple to find it.
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
128
42875
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
129 If you are using this example to compile your own plugin. You should change the
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
130 project name at the beginning of the file as well as the library name which in
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
131 this case is `libhelloworld`. You will also need to change the `G_LOG_DOMAIN`
e13c0a30d6e9 Update the C plugin how to
Gary Kramlich <grim@reaperworld.com>
parents: 42847
diff changeset
132 macro to your own log domain.
42782
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
133
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
134 Now, you can quickly build your plugin with the following commands:
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
135
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
136 ```
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
137 meson setup build
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
138 meson compile -C build
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
139 meson install -C build
9271f4acf563 Fix a number of issues with the C plugin tutorial
Gary Kramlich <grim@reaperworld.com>
parents: 41638
diff changeset
140 ```

mercurial