Our build system uses Premake 5. For convenience, we keep the
premake5.exe binary in the bin directory.Premake generates the Visual Studio solution in the
vs2022 directory and the
ignored Ninja graph in ninja/, both from premake5.lua. The generated
solution files are stored in the repository for convenience.bun cmd/build.ts builds with MSBuild by default. Pass -ninja to generate the
Ninja graph when needed and build with Ninja instead. To regenerate the graph
without building, run bun cmd/ninja.ts.When to run premake #
Premake regenerates Visual Studio project files from the
premake5.*.lua files.You only need to do that if you add or remove source files.
To regenerate them:
- install bun
- make changes to
premake5.*.luafiles, most likelypremake5.files.lua - run
bun .\cmd\premake.ts
Relevant files:
PS C:\Users\kjk\src\sumatrapdf> ls *.lua
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 4/24/2020 12:20 AM 22947 premake5.files.lua
-a---- 5/4/2020 7:51 PM 23565 premake5.lua
Customize the build #
Sometimes we want to customize the build with
#ifdef. We could do it by adding additional configurations, but that can spiral out of control quickly.Instead, we have the
src\BuildConfig.h file. It’s empty by default, but you can change it to add your #define customization.Build variants #
We have
Debug, Release, and ReleaseAnalyze configurations. ReleaseAnalyze runs code analysis.We have platforms:
Win32: 32-bit buildx64: 64-bit buildx64_asan: 64-bit build with additional runtime AddressSanitizer checks. Only 64-bit builds support AddressSanitizer, for simplicity