mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-05 08:25:32 +00:00
These were replaced by kmc in v17.0. We kept them as legacy alternatives in v18.0, but it is time to remove them now to reduce the maintenance of having multiple entry points to kmc. Fixes: #13181 Test-bot: skip
109 lines
3.8 KiB
Markdown
109 lines
3.8 KiB
Markdown
---
|
|
title: Migrating from kmcomp to kmc
|
|
---
|
|
|
|
`kmcomp` was the command-line compiler for Keyman Developer through version
|
|
16.0. Version 17.0 replaces `kmcomp` with `kmc`.
|
|
|
|
The lexical model command-line tooling, `kmlmc`, `kmlmp`, and `kmlmi`, have
|
|
been removed in version 19.0; instead use `kmc`.
|
|
|
|
## Benefits
|
|
|
|
* Unlike `kmcomp`, which was a Windows-only console application, `kmc` is a
|
|
cross-platform application, running on Windows, Linux, and macOS, built in
|
|
node.js.
|
|
* `kmc` parameters have been redesigned to be more consistent, and easily
|
|
extensible for new functionality.
|
|
* `kmc` can run in a batch mode that is up to 100x faster than `kmcomp`.
|
|
* `kmc` can be easily integrated into GitHub Actions and other continuous
|
|
integration tooling.
|
|
|
|
## Compiling a project
|
|
|
|
To compile a project, `kmcomp` used a command line such as:
|
|
|
|
```bash
|
|
kmcomp path\to\my_keyboard.kpj
|
|
```
|
|
|
|
With `kmc`, you would use:
|
|
|
|
```bash
|
|
kmc build path/to/my_keyboard.kpj
|
|
# or you can specify just the folder:
|
|
kmc build path/to/
|
|
# If you are in the same folder as the .kpj:
|
|
kmc build .
|
|
```
|
|
|
|
This is the recommended way of using `kmc` -- always build an entire project,
|
|
rather than just the keyboard.
|
|
|
|
## Compiling a keyboard
|
|
|
|
To compile a keyboard, `kmcomp` builds used command lines such as:
|
|
|
|
```bash
|
|
# building a .kmx
|
|
kmcomp my_keyboard.kmn my_keyboard.kmx
|
|
# building a .js (for KeymanWeb)
|
|
kmcomp my_keyboard.kmn my_keyboard.js
|
|
```
|
|
|
|
With `kmc`, you would use:
|
|
|
|
```bash
|
|
# building all outputs
|
|
kmc build my_keyboard.kmn
|
|
# or to specify output files (.js inferred from .kmx, and always built)
|
|
kmc build my_keyboard.kmn -o my_keyboard.kmx
|
|
```
|
|
|
|
## Compiling a package
|
|
|
|
To compile a package, `kmcomp` builds used command lines such as:
|
|
|
|
```bash
|
|
kmcomp my_keyboard.kps
|
|
```
|
|
|
|
With `kmc`, you would use:
|
|
|
|
```bash
|
|
kmc build my_keyboard.kps
|
|
# to specify output file or path
|
|
kmc build my_keyboard.kps -o path/to/my_keyboard.kmp
|
|
```
|
|
|
|
## Map of parameters
|
|
|
|
The following table lists common parameters in `kmcomp`, and the corresponding
|
|
parameter in `kmc`:
|
|
|
|
kmcomp | kmc | notes
|
|
-----------------------|---------------------------------------|-------------
|
|
`-h`, `-help` | `-h`, `--help` | Note that `kmc --help` can be used for further detail on subcommands, e.g. `kmc build --help`
|
|
`-s` | `-l warn`, `--log-level warn` | Silent option, suppresses informational and hint-level messages
|
|
`-ss` | `-l silent`, `--log-level silent` | Super-silent option, suppresses all messages, except fatal internal errors
|
|
`-nologo` | not required | `kmc` does not emit a compiler description
|
|
`-c` | N/A | `kmc` does not currently support the `clean` command, this will be supported in future versions
|
|
`-d` | `-d`, `--debug` | Include debug information in output files
|
|
`-w` | `-w`, `--compiler-warnings-as-errors` | Causes warnings to fail the build; overrides project-level option
|
|
`-cfc` | not required | Filename convention checks are now standard hints/warnings in the build
|
|
`-t` | N/A | Build specified target from .kpj, not supported in kmc
|
|
`-color` | `--color` | Force colorization for log messages
|
|
`-no-color` | `--no-color` | No colorization for log messages
|
|
`-no-compiler-version` | `--no-compiler-version` | Exclude compiler version metadata from output files
|
|
|
|
## Compiling a lexical model
|
|
|
|
```bash
|
|
# recommended, build the model project:
|
|
kmc build .
|
|
# building single files:
|
|
kmc build file.model.ts
|
|
kmc build file.model.ts -o output/path/file.model.js
|
|
kmc build file.model.kps
|
|
```
|
|
|