-
Notifications
You must be signed in to change notification settings - Fork 79
/
README.rst
375 lines (217 loc) · 9.45 KB
/
README.rst
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
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
Libraries
=========
Um die AusweisApp zu bauen ist eine Toolchain erforderlich, die die
Abhängigkeiten und die Compilertools beinhaltet.
Unterstützte C++17 Compiler:
- MinGW / GCC >= 11.2
- Clang >= 5.0
- MSVC >= 2017
Notwendige Bibliotheken:
- Qt >= 5.15
- http:https://www.qt.io/download/
- OpenSSL >= 1.1.0
- https://www.openssl.org/source/
- LibreSSL wird auf Grund des fehlenden RSA-PSK nicht unterstützt.
- pcsclite >= 1.8 (nur Linux/FreeBSD)
Notwendige Tools:
- CMake >= 3.13.0 (3.14.0 >= für iOS)
- http:https://www.cmake.org
Build
-----
Die Abhängigkeiten lassen sich mittels der CMakeLists.txt in diesem Ordner
automatisch aufbauen.
Das Skript kann die abhängigen Bibliotheken als Quellcode selbständig herunterladen,
entpacken und bauen.
Lokale Pakete können optional mittels -DPACKAGES_DIR=C:/packages verwendet werden.
Wichtig: Bei PACKAGES_DIR muss ein absoluter Pfad angegeben werden!
Der Build umfasst unter anderem das Qt-Framework, daher kann (je nach Rechenleistung)
der Build einige Stunden dauern.
Wichtig bei der Angabe in CMake ist der Verweis auf den Ordner "libs". Ein Verweis
direkt auf "AusweisApp" würde den Build für die "AusweisApp" konfigurieren.
Nach dem Aufruf "nmake"/"mingw32-make"/"ninja" werden nun alle Bibliotheken gebaut und
in dem Ordner ./dist installiert. Dieser Ordner kann beim Build von der AusweisApp
mittels -DCMAKE_PREFIX_PATH als Toolchain angegeben werden.
Zusätzlich kann mit dem make Target "compress" der Inhalt der dist-Ordner bereinigt und
ein Tarball aus den gebauten Bibliotheken erzeugt werden.
Proxy
^^^^^
Sofern beim Download der Pakete ein Proxy notwendig ist, müssen vorm Aufruf von "make"
folgende Umgebungsvariablen gesetzt werden. (Ein erneutes Ausführen von CMake ist nicht
notwendig.)
::
http_proxy=host:port
https_proxy=host:port
ftp_proxy=host:port
macOS
^^^^^
Unter MacOS ist die Einrichtung relativ einfach und bedarf nur der oben genannten Voreinstellungen.
Es wird der von Apple ausgelieferte clang compiler verwendet.
Beispiel: Innerhalb von macOS /Users/governikus/AusweisApp2 befindet sich der Quellcode.
::
$ cd /Users/governikus
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=release ../AusweisApp2/libs
$ make
=======
Beispiel: Innerhalb von /Users/governikus/AusweisApp befindet sich der Quellcode.
Linux / Unix
^^^^^^^^^^^^
Die Einrichtung unter Linux/Unix ist einfach und erfordert nur die oben genannten Einstellungen. Die meisten Distributionen haben den C Compiler bereits vorinstalliert, aber er kann auch nachträglich installiert werden.
Beispiel: Innerhalb von Linux/Unix /home/governikus/AusweisApp2 befindet sich der Quellcode
Install dependencies :
` sudo apt install libpcsclite1 libpcsclite-dev qttools5-dev libqt5svg5-dev libqt5websockets5-dev libqt5qml5 libqt5qml5-dev qtdeclarative5-dev qtbase5-dev qt-quickcontrols2-5-dev
`
::
$ cd /home/governikus
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=release ../AusweisApp/libs
$ make
Windows
^^^^^^^
Unter Windows müssen zunächst die Vorraussetzungen für die Buildumgebung geschaffen
werden. Hierzu müssen folgende Programme im System installiert und wie vermerkt
konfiguriert werden.
Windows SDK
"""""""""""
- Manuelle Installation nur für MinGW notwendig, kann für MSVC per Visual Studio
installiert werden.
- https://developer.microsoft.com/de-de/windows/downloads/windows-sdk/
- Getestet: 10.0.22621.1
- Umgebungsvariable setzen:
- Für das Windows SDK 10.0.15063.0 und neuer:
- WindowsSdkVerBinPath = C:\Program Files (x86)\Windows Kits\10\bin\%VERSION%
- Für alle älteren Versionen:
- WindowsSdkDir = C:\Program Files (x86)\Windows Kits\10
CMake
"""""
- https://cmake.org/download/
- Getestet: 3.23.2
- Pfad zur CMake-Executable muss zur Path-Umgebungsvariable hinzugefügt werden
Ninja
"""""
- https://github.com/ninja-build/ninja/releases
- Getestet: v1.11.0
- Qt verwendet intern ninja als Buildtool. Ninja ist nicht zwingend notwendig,
wird jedoch von Qt empfohlen.
- Pfad zur ninja-Executable muss zur Path-Umgebungsvariable hinzugefügt werden
MinGW
"""""
- https://wiki.qt.io/MinGW
- Getestet: x86_64-11.2.0-release-posix-seh-rt_v9-rev3
- Pfad zu MinGW-bin-Verzeichnis muss zur Path-Umgebungsvariable hinzugefügt
werden
- Eventuell muss für MinGW folgende Option gesetzt werden [1]:
#. Windows --> gpedit.msc --> Enter (als Administrator)
#. Richtlinien für Lokaler Computer
#. Computerkonfiguration
#. Administrative Vorlagen
#. System
#. Dateisystem
#. Lange Win32-Pfade aktivieren
[1] https://bugreports.qt.io/browse/QTBUG-16443
MSVC
""""
- Installation von MSVC (und evtl. Windows SDK) über Visual Studio:
https://visualstudio.microsoft.com/de/
- Getestet: Visual Studio 2022
- Pfad zu VS-Environment-Skripten zur Path-Umgebungsvariable hinzufügen
- Je nach VS-Edition: C:\Program Files\Microsoft Visual Studio\<jahr>\<edition>\VC\Auxiliary\Build
Python
""""""
- https://www.python.org/downloads/
- Getestet: 3.10.5
- Pfad zur Python-Executable muss zur Path-Umgebungsvariable hinzugefügt werden
Perl
""""
- Sowohl für Qt als auch für OpenSSL ist Perl erforderlich. Für OpenSSL ist
relevant, welche Art von Pfaden (Unix oder Windows) Perl verwendet.
- Für Builds mit MinGW wird MSYS2 Perl benötigt.
- Für Builds mit MSVC wird ActivePerl oder StrawberryPerl benötigt.
- MSYS2 Perl
- https://github.com/msys2/msys2-installer/releases/
- Getestet: msys2-base-x86_64-20220603.tar.xz
- MSYS2 sollte immer über den Befehl "msys2_shell.cmd -use-full-path" gestartet
werden, da MSYS2 sonst einige eigene Pfade nicht findet.
- Nach Entpacken MSYS2 mit "pacman -Syu" aktualisieren.
- Wenn sich kein weiteres Perl im Pfad befindet muss für den Build von Qt
<msys_base>/usr/bin zum Pfad hinzugefügt werden.
- ActivePerl/StrawberryPerl
- Es kann entweder ActivePerl(https://www.activestate.com/products/perl/) oder
StrawberryPerl(https://strawberryperl.com/, hierbei den QTBUG-102828[1]
beachten) verwendet werden.
- Getestet: strawberry-perl-5.32.1.1-64bit.msi
- Pfad zur Perl-Executable muss zur Path-Umgebungsvariable hinzugefügt werden.
- Hierbei muss darauf geachtet werden, dass das Perl-Verzeichnis
vor andere Perl Installationen (z.B. MSYS2) aufgeführt wird, sodass
diese Version anderen Perl Installationen vorgezogen wird.
[2] https://bugreports.qt.io/browse/QTBUG-102828
OpenSSL / Qt mit MinGW
""""""""""""""""""""""
Da Qt mittels Batchskript gebaut werden muss, ist es leider nicht möglich dies innerhalb
von MSYS2 zu bauen [3]. Daher wird OpenSSL und Qt mittels Windows-CLI konfiguriert.
Dabei wird Qt über Windows-CLI und OpenSSL unter MSYS2 gebaut.
#. cmd.exe von Windows starten
#. mkdir c:\msys64\home\user\qt ("user" ist der Benutzer, der unter MSYS2 verwendet wird)
#. cd c:\msys64\home\user\qt
#. cmake -DCMAKE_BUILD_TYPE=release C:/AusweisApp/libs -G "MinGW Makefiles"
#. MSYS2 Shell starten ("msys2_shell.cmd -use-full-path")
#. cd qt
#. mingw32-make openssl
#. MSYS2 Shell verlassen
#. In der cmd.exe: c:\msys64\home\user\qt
#. mingw32-make qt
[3] http:https://sourceforge.net/p/mingw/bugs/1902/
OpenSSL / Qt mit MSVC
"""""""""""""""""""""
#. cmd.exe von Windows starten
#. mkdir c:\qt
#. cd c:\qt
#. call vcvarsall.bat amd64
#. cmake -DCMAKE_BUILD_TYPE=release C:/AusweisApp/libs -G "NMake Makefiles"
#. nmake
iOS
"""
Die Toolchain für iOS kann nur auf MacOS gebaut werden. Dabei müssen XCode und
die Command Line Tools (siehe "xcode-select -p" bzw. "xcode-select --install")
auf dem Mac vorhanden sein. Die folgende Anleitung wurde unter macOS 10.12 getestet.
Ebenfalls muss für den Build-Vorgang von Qt ein iOS Developer-Zertifikat mit Wildcard (*)
im Keystore von MacOS hinterlegt sein.
Beispiel: Innerhalb von /Users/governikus/AusweisApp befindet sich der Quellcode.
::
$ cd /Users/governikus
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=release -DCMAKE_TOOLCHAIN_FILE=../AusweisApp/cmake/iOS.toolchain.cmake ../AusweisApp/libs
$ make
Android
"""""""
Die Toolchain für Android wird derzeit nur unter Linux unterstützt. Dabei müssen folgende
Komponenten vorhanden sein:
- Android NDK mit gesetztem ANDROID_NDK_ROOT
- https://developer.android.com/tools/sdk/ndk/index.html
- Getestet: r21e (https://wiki.qt.io/Qt_for_Android_known_issues)
- Android SDK (cmdline) mit gesetztem ANDROID_SDK_ROOT
- https://developer.android.com/studio#cmdline-tools
- Getestet: 26.1.1 / 3.0
- SDK build tools
- https://developer.android.com/studio/releases/build-tools
- Getestet: 30.0.3
- SDK platform tools
- https://developer.android.com/studio/releases/platform-tools
- Getestet: 30.0.3
- Um Qt erfolgreich zu bauen, ist mindestens ein API-Levelpaket von Android notwendig.
Dieses sollte mindestens Level 21 sein. Nähere Informationen dazu
sind im Wiki von Qt enthalten: http:https://wiki.qt.io/Android
Die Plattformen können mittels Android Manager nachinstalliert werden.
- JDK mit gesetztem JAVA_HOME
Beispiel: Innerhalb von /home/governikus/AusweisApp befindet sich der Quellcode.
::
$ cd /home/governikus
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=release -DCMAKE_TOOLCHAIN_FILE=../AusweisApp/cmake/android.toolchain.cmake ../AusweisApp/libs
$ make
Standardmäßig wird die Architektur "armeabi-v7a" gewählt. Um zum Beispiel die Toolchain für x86-Architektur
zu bauen, ist beim Aufruf von CMake der Parameter "-DCMAKE_ANDROID_ARCH_ABI=x86" mitzugeben.