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.*.luafiles, most likelypremake5.files.lua - run
doit.bat -premakewhich runs a Go program indodirectory with-premakeflag
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.luaCustomizing 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.