kbdneo-Buildskripte weiter automatisiert; einzelne Layouts kompilierbar

Es ist nicht mehr notwendig, die VS Build Tools Umgebungen einzeln aufzurufen. Stattdessen kann man mit build_layout
ein einzelnes, mit build_all alle Layouts bauen. Die jeweilige Umgebung wird implizit gesetzt.
Voraussetzung sind die installierten Buildtools und die Einstellung der Variable buildtools im Skript (=Jahreszahl).
This commit is contained in:
qwertfisch 2023-09-05 01:05:08 +02:00
parent 6d88148865
commit b24d10d001
8 changed files with 138 additions and 89 deletions

View File

@ -4,7 +4,7 @@ Für die weitergehende Entwicklung und Kompilierung der Treiberlayout-DLLs unter
1. Über Visual Studio
2. Über ein manuelles Buildskript
Die erste Variante ist einfacher und dient auch der Entwicklung. Die zweite Variante benötigt kein Visual Studio und insbesondere kein Windows Driver Kit.
Die erste Variante ist der kanonische Weg. Die zweite Variante benötigt kein Visual Studio und insbesondere kein umfangreiches Windows Driver Kit. Sie kann für eigene Anpassungen an den Layoutdateien verwendet werden.
## Regulärer Build mit Visual Studio
@ -36,28 +36,24 @@ Für jedes der enthaltenen Tastaturlayouts sind nun je zwei .dll-Dateien (Name =
### Voraussetzungen
* Visual Studio Build Tools: Auf https://visualstudio.microsoft.com/de/downloads/ nach unten scrollen, unter „Alle Downloads“ den Reiter „Tools für Visual Studio 2019“ aufklappen und „Buildtools für Visual Studio 2019“ auswählen.
* Visual Studio Build Tools: Auf https://visualstudio.microsoft.com/de/downloads/ nach unten scrollen, unter „Alle Downloads“ den Reiter „Tools für Visual Studio“ aufklappen und „Buildtools für Visual Studio 2022“ auswählen.
* Im Installer unter „Workloads“ die C++-Buildtools auswählen oder alternativ unter „Einzelne Komponenten“ die aktuellen x64/x86-Buildtools sowie das aktuelle Windows 10 SDK auswählen.
Ältere, bereits installierte Buildtools funktionieren gleichermaßen. Dazu muss man vor dem Build einmalig die Variable `buildtools` in den Skripten umstellen auf die entsprechende Version (Jahreszahl).
### Build
Nach der Installation stehen im Startmenü im Ordner Visual Studio 2019 verschiedene Command Prompts zur Verfügung. Das Vorgehen ist wie folgt:
Nach der Installation können einzelne oder alle Layouts über die im `build`-Verzeichnis verfügbaren Skripte gebaut werden.
* x86_x64 Cross Tools Command Prompt for VS 2019 starten
* ins `build`-Verzeichnis unterhalb von kbdneo wechseln
* `build_x64` ausführen
Dies baut die x64-Varianten der DLLs. Für die x86-Varianten (für 32 Bit bzw. SysWOW64) lautet es:
* x86 Native Tools Command Prompt for VS 2019 starten
* ins `build`-Verzeichnis unterhalb von kbdneo wechseln
* `build_x86` ausführen
* ins `build`-Verzeichnis unterhalb von `windows\kbdneo2` wechseln
* `build_all` ausführen, oder alternativ `build_layout [Layoutname]`, wobei hier der Layoutname ohne "kbd" angegeben wird (z.B. neo2 oder bone), wie er im `source`-Verzeichnis verwendet wird.
Die erzeugten DLLs sind anschließend in den Unterverzeichnissen `x64`, `x86` und `x86-wow64` der jeweiligen Layoutvarianten zu finden.
## kbdqwertz mit „ß“ unten
Von kbdqwertz (aus historischen Gründen in kbdgr2 platziert) gibt es zwei Varianten, einmal mit dem regulären QWERTZ-Layout mit ß oben und dem Bindestrich unten. Die zweite Variante tauscht beides, sodass der Bindestrich gemeinsam mit anderen Strichen auf weiteren Ebenen auf der Strichtaste landet. Das „ß“ verschiebt sich dafür ins Hauptfeld.
Von kbdqwertz (aus historischen Gründen im Verzeichnis `kbdgr2` platziert) gibt es zwei Varianten, einmal mit dem regulären QWERTZ-Layout mit ß oben und dem Bindestrich unten. Die zweite Variante tauscht beides, sodass der Bindestrich gemeinsam mit anderen Strichen auf weiteren Ebenen auf der Strichtaste landet. Das „ß“ verschiebt sich dafür ins Hauptfeld.
Um kbdqwertz mit „ß“ unten zu kompilieren, muss in `kbdgr2.h` folgende Zeile einkommentiert werden:
```

View File

@ -0,0 +1,95 @@
@echo off
set buildtools=2022
echo Baue alle Layouts (Neo, NeoQwertz, Bone, Mine, Koy, Noted) ...
echo.
pushd ..\source
REM Zuerst die x64-Varianten bauen
pushd "C:\Program Files (x86)\Microsoft Visual Studio\%buildtools%\BuildTools\"
call "C:\Program Files (x86)\Microsoft Visual Studio\%buildtools%\BuildTools\VC\Auxiliary\Build\vcvarsx86_amd64.bat"
popd
cd kbdbone
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd bone
cd ..
cd kbdneo2
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd neo2
cd ..
cd kbdgr2
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd gr2
cd ..
cd kbdmine
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd mine
cd ..
cd kbdkoy
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd koy
cd ..
cd kbdnoted
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd noted
cd ..
REM x86 und x86_wow64 bauen
pushd "C:\Program Files (x86)\Microsoft Visual Studio\%buildtools%\BuildTools\"
call "C:\Program Files (x86)\Microsoft Visual Studio\%buildtools%\BuildTools\VC\Auxiliary\Build\vcvars32.bat"
popd
cd kbdbone
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd bone
call ..\..\build\build_variant_x86_wow64.cmd bone
cd ..
cd kbdneo2
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd neo2
call ..\..\build\build_variant_x86_wow64.cmd neo2
cd ..
cd kbdgr2
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd gr2
call ..\..\build\build_variant_x86_wow64.cmd gr2
cd ..
cd kbdmine
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd mine
call ..\..\build\build_variant_x86_wow64.cmd mine
cd ..
cd kbdkoy
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd koy
call ..\..\build\build_variant_x86_wow64.cmd koy
cd ..
cd kbdnoted
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd noted
call ..\..\build\build_variant_x86_wow64.cmd noted
cd ..
popd

View File

@ -0,0 +1,32 @@
@echo off
if "%1"=="" (
echo Bitte das entsprechende Layout angeben, so benannt wie das Quellverzeichnis ^(ohne "kbd"^).
exit /b
)
IF NOT EXIST ..\source\kbd%1 (
echo Das Layoutverzeichnis kbd%1 existiert nicht.
exit /b
)
set buildtools=2022
pushd ..\source\kbd%1
IF NOT EXIST x64 mkdir x64
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
pushd "C:\Program Files (x86)\Microsoft Visual Studio\%buildtools%\BuildTools\"
call "C:\Program Files (x86)\Microsoft Visual Studio\%buildtools%\BuildTools\VC\Auxiliary\Build\vcvarsx86_amd64.bat"
popd
call ..\..\build\build_variant_x64.cmd %1
pushd "C:\Program Files (x86)\Microsoft Visual Studio\%buildtools%\BuildTools\"
call "C:\Program Files (x86)\Microsoft Visual Studio\%buildtools%\BuildTools\VC\Auxiliary\Build\vcvars32.bat"
popd
call ..\..\build\build_variant_x86.cmd %1
call ..\..\build\build_variant_x86_wow64.cmd %1
popd

View File

@ -1,7 +1,7 @@
@echo off
if "%1"=="" (
ECHO Dieses Skript ist nur zur internen Verwendung von build_x64 gedacht.
ECHO Dieses Skript ist nur zur internen Verwendung von build_layout gedacht.
EXIT /B
)

View File

@ -1,7 +1,7 @@
@echo off
if "%1"=="" (
ECHO Dieses Skript ist nur zur internen Verwendung von build_x86 gedacht.
ECHO Dieses Skript ist nur zur internen Verwendung von build_layout gedacht.
EXIT /B
)

View File

@ -1,7 +1,7 @@
@echo off
if "%1"=="" (
ECHO Dieses Skript ist nur zur internen Verwendung von build_x86 gedacht.
ECHO Dieses Skript ist nur zur internen Verwendung von build_layout gedacht.
EXIT /B
)

View File

@ -1,32 +0,0 @@
@echo off
pushd ..\source
REM Build Bone, Neo, Qwertz, Mine
cd kbdbone
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd bone
cd ..
cd kbdneo2
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd neo2
cd ..
cd kbdgr2
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd gr2
cd ..
cd kbdmine
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd mine
cd ..
cd kbdkoy
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd koy
cd ..
popd

View File

@ -1,42 +0,0 @@
@echo off
pushd ..\source
REM Build Bone, Neo, Qwertz, Mine
cd kbdbone
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd bone
call ..\..\build\build_variant_x86_wow64.cmd bone
cd ..
cd kbdneo2
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd neo2
call ..\..\build\build_variant_x86_wow64.cmd neo2
cd ..
cd kbdgr2
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd gr2
call ..\..\build\build_variant_x86_wow64.cmd gr2
cd ..
cd kbdmine
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd mine
call ..\..\build\build_variant_x86_wow64.cmd mine
cd ..
cd kbdkoy
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd koy
call ..\..\build\build_variant_x86_wow64.cmd koy
cd ..
popd