blob: 3653b8654611c16e4415ce3d632374c025a0f860 (
plain)
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
|
**************************
Frequently Asked Questions
**************************
This is a list of Frequently Asked Questions about |project|.
Feel free to suggest new entries using our `Mailing list`_ or our IRC channel!
General
=======
What is Shiboken?
-----------------
Shiboken is a Generator Runner plugin that outputs C++ code for CPython
extensions.
The first version of PySide had source code based on Boost templates.
It was easier to produce code but a paradigm change was needed, as the next
question explains.
Why did you switch from Boost.Python to Shiboken?
-------------------------------------------------
The main reason was the size reduction. Boost.Python makes excessive use of
templates resulting in a significant increase of the binaries size.
On the other hand, as Shiboken generates CPython code, the resulting binaries
are smaller.
Creating bindings
=================
Can I wrap non-Qt libraries?
----------------------------
Yes. Check Shiboken source code for an example (libsample).
Is there any runtime dependency on the generated binding?
---------------------------------------------------------
Yes. Only libshiboken, and the obvious Python interpreter
and the C++ library that is being wrapped.
What do I have to do to create my bindings?
-------------------------------------------
Most of the work is already done by the API Extractor.
The developer creates a :std:doc:`typesystem <apiextractor:typesystem>`
file with any customization wanted in
the generated code, like removing classes or changing method signatures.
The generator will output the *.h* and *.cpp* files with the CPython code that
will wrap the target library for python.
Is there any recommended build system?
--------------------------------------
Both API Extractor and generator uses and recommends the CMake build system.
Can I write closed-source bindings with the generator?
------------------------------------------------------
Yes, as long as you use a LGPL version of Qt, due to runtime requirements.
What is 'inject code'?
----------------------
That's how we call customized code that will be *injected* into the
generated at specific locations. They are specified inside the typesystem.
.. _`Mailing list`: http://lists.qt-project.org/mailman/listinfo/pyside
|