Our build system uses
Premake5.
For convenience, we store the binary in
bin
directory.Premake generates Visual Studio solution in directory
vs2019
from premake5.lua
file. Generated
solution files are stored in the repository for convenience.Running
Premake re-generates solution files from
premake5.*.lua
files.You only need to do that if you add or remove source files.
To re-generate:
- install Go
- make changes to
premake5.*.lua
files, most likelypremake5.files.lua
- run
doit.bat -premake
which runs a Go program indo
directory with-premake
flag
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
-a---- 5/4/2020 7:51 PM 8457 premake5.opt.lua
Customizing 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
src\utils\BuildConfig.h
file.
It's empty by default but you can changed 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 buildx32_asan
: 32-build with additional runtime Address Sanitizers checks. Only available in 32-bit build because of compiler limitations
How official builds are made
I use a Go program in
do
directory, executed with
doiit.bat -build-pre-rel
or
doit.bat -build-rel
.