parent
52b69b8939
commit
519f159dcc
7 changed files with 121 additions and 7 deletions
@ -0,0 +1,37 @@ |
|||||||
|
# Copyright 2012-2015 The Meson development team |
||||||
|
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
# you may not use this file except in compliance with the License. |
||||||
|
# You may obtain a copy of the License at |
||||||
|
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
|
||||||
|
# Unless required by applicable law or agreed to in writing, software |
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
# See the License for the specific language governing permissions and |
||||||
|
# limitations under the License. |
||||||
|
|
||||||
|
'''This module provides helper functions for Gnome/GLib related |
||||||
|
functionality such as gobject-introspection and gresources.''' |
||||||
|
|
||||||
|
import build |
||||||
|
import os |
||||||
|
|
||||||
|
def compile_resources(state, args, kwargs): |
||||||
|
cmd = ['glib-compile-resources', '@INPUT@', '--generate'] |
||||||
|
if 'source_dir' in kwargs: |
||||||
|
d = os.path.join(state.build_to_src, kwargs.pop('source_dir')) |
||||||
|
cmd += ['--sourcedir', d] |
||||||
|
if 'c_name' in kwargs: |
||||||
|
cmd += ['--c-name', kwargs.pop('c_name')] |
||||||
|
cmd += ['--target', '@OUTPUT@'] |
||||||
|
kwargs['command'] = cmd |
||||||
|
output_c = args[0] + '.c' |
||||||
|
output_h = args[0] + '.h' |
||||||
|
kwargs['input'] = args[1] |
||||||
|
kwargs['output'] = output_c |
||||||
|
target_c = build.CustomTarget(args[0]+'_c', state.subdir, kwargs) |
||||||
|
kwargs['output'] = output_h |
||||||
|
target_h = build.CustomTarget(args[0] + '_h', state.subdir, kwargs) |
||||||
|
return [target_c, target_h] |
@ -0,0 +1 @@ |
|||||||
|
This is a resource. |
@ -0,0 +1,27 @@ |
|||||||
|
#include<stdio.h> |
||||||
|
#include<string.h> |
||||||
|
#include<gio/gio.h> |
||||||
|
#include"myresources.h" |
||||||
|
|
||||||
|
#define EXPECTED "This is a resource.\n" |
||||||
|
|
||||||
|
int main(int argc, char **argv) { |
||||||
|
GResource *res = myres_get_resource(); |
||||||
|
GError *err = NULL; |
||||||
|
GBytes *data = g_resources_lookup_data("/com/example/myprog/res1.txt", |
||||||
|
G_RESOURCE_LOOKUP_FLAGS_NONE, &err); |
||||||
|
|
||||||
|
if(data == NULL) { |
||||||
|
fprintf(stderr, "Data lookup failed: %s\n", err->message); |
||||||
|
return 1; |
||||||
|
} |
||||||
|
if(strcmp(g_bytes_get_data(data, NULL), EXPECTED) != 0) { |
||||||
|
fprintf(stderr, "Resource contents are wrong:\n %s\n", |
||||||
|
(const char*)g_bytes_get_data(data, NULL)); |
||||||
|
return 1; |
||||||
|
} |
||||||
|
fprintf(stderr, "All ok.\n"); |
||||||
|
g_bytes_unref(data); |
||||||
|
g_resource_unref(res); |
||||||
|
return 0; |
||||||
|
} |
@ -0,0 +1,12 @@ |
|||||||
|
project('glib compile resource', 'c') |
||||||
|
|
||||||
|
gnome = import('gnome') |
||||||
|
gio = dependency('gio-2.0') |
||||||
|
|
||||||
|
myres = gnome.compile_resources('myresources', 'myresource.gresource.xml', |
||||||
|
source_dir : 'data', |
||||||
|
c_name : 'myres') |
||||||
|
|
||||||
|
exe = executable('resprog', 'main.c', myres, |
||||||
|
dependencies : gio) |
||||||
|
test('resource test', exe) |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<gresources> |
||||||
|
<gresource prefix="/com/example/myprog"> |
||||||
|
<file>res1.txt</file> |
||||||
|
</gresource> |
||||||
|
</gresources> |
Loading…
Reference in new issue