Build - Windows
This page describes how to build the library under windows with licensecc 2.1.0.
For quick compilation instructions see the README.md file in the repository root. This page provides detailed, platform-specific instructions for Windows.
MSVC
Supported Visual Studio versions are:
Visual Studio 2026 (used in development).
Visual Studio 2022 (used in the automated builds). The lowest supported version is the latest minor release/servicing update of Visual Studio 2022 (v17.x).
Visual Studio 2019 and 2017 are not tested anymore (though they should still work).
Automated tests run on Windows Server 2022, Windows Server 2026 and Windows 11 (arm64).
Libraries supported/tested in 2.1.0 (Windows x64):
CMake: >= 3.16.
Boost: tested with 1.64.0, 1.78.0 and 1.90.0. Boost is only needed to run the tests and to build
lccgenandlcc-inspector; it’s never linked intoliblicensecc. The pre-compiled binaries should match the compiler version.OpenSSL: optional.
MSVC install prerequisites
Git is of course a prerequisite, if you don’t have it you can download it from git-scm.com.
Pre-compiled versions of boost for windows can be downloaded from the
userdocs/boost releases (the same source
used by the project CI). Choose the installer that matches the desired architecture and
compiler, eg. for Visual Studio 2022 64 bit download boost_1_90_0-msvc-14.3-64.exe.
Alternatively pre-compiled boost binaries are available at SourceForge.
Checkout the code
Check out the code using git:
Note
This project has a submodule (the license generator). Remember to add the option –recursive to clone it.
git clone --recursive https://github.com/open-license-manager/licensecc.git
Compile and build (command line)
Open a command prompt in the folder where you checked out the library.
Configure the library (windows x64):
cd build
cmake .. -G "Visual Studio 17 2022" -A x64 -DBOOST_ROOT="C:\local\boost" //(or where boost was installed)
Configure the library (windows x86):
For some configuration reason we’re unable to build using x86 using visual studio generators. We recommend to use Ninja build system.
cd build
"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86
cmake .. -G "Ninja" [-DBOOST_ROOT="C:\local\boost" //(or where boost was installed)]
Supported cmake definitions/options
Below a list of some useful cmake configurations:
Definition name |
Description |
|---|---|
-DSTATIC_RUNTIME=ON |
link statically to the standard and runtime support libraries (compiler flag /MT). Default ON. |
-DBUILD_SHARED_LIBS=OFF |
additionally build the shared (DLL) version of the library. Requires -DSTATIC_RUNTIME=OFF. |
-DUSE_OPENSSL=OFF |
search for and link against OpenSSL. Default OFF on Windows (Windows crypto APIs are used instead, no additional feature from OpenSSL). |
-DOpenSSL_ROOT_DIR=C:.. |
(Optional) folder where OpenSSL is installed (eg. C:Program FilesOpenSSL-Win64). |
-DCMAKE_BUILD_TYPE=Release |
link to the release version of the boost libraries |
-DCMAKE_INSTALL_PREFIX=C:XX |
folder where to install libraries and headers |
-DBOOST_ROOT=C:.. |
folder where boost is installed. If cmake is reporting boost not found consider updating cmake. |
-DLCC_PROJECT_NAME=<name> |
name of the software you want to issue a license for. Defaults to “DEFAULT”. |
Compile and test
cmake --build . --target install --config Release
ctest -C Release
Compile and build (Visual studio 2026)
Visual Studio 2022 integrates with CMake (the process requires a couple of restarts and it’s all but “fluid”).
After opening the project “as a CMake project” a CMakeSettings.json should appear in the base folder. Edit the file as below (the file is for an x86 architecture). In a special way:
remove the “-v” switch from “buildCommandArgs”
add the variable BOOST_ROOT pointing to where your boost installation is.
Restart, delete and rebuild the cache a couple of time, until Visual Studio understands the new options.
{
"configurations": [
{
"name": "x86-Debug",
"generator": "Visual Studio 17 2022",
"configurationType": "Debug",
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeExecutable": "C:/Program Files/CMake/bin/cmake.exe",
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"inheritEnvironments": [
"msvc_x86"
],
"intelliSenseMode": "windows-msvc-x86",
"variables": [
{
"name": "BOOST_ROOT",
"value": "C:/local/boost",
"type": "PATH"
}
]
}
]
}
Windows ARM64
Windows on ARM (arm64) is supported and tested in CI on a Windows 11 arm64 runner.
Boost is provided by vcpkg (packages boost-program-options,
boost-test, boost-filesystem, boost-date-time with the
arm64-windows-static-release triplet) and OpenSSL is disabled (the Windows
cryptography APIs are used):
cmake -S . -B build -DSTATIC_RUNTIME=ON -DUSE_OPENSSL=OFF -DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_TOOLCHAIN_FILE="<vcpkg folder>\scripts\buildsystems\vcpkg.cmake" ^
-DVCPKG_TARGET_TRIPLET=arm64-windows-static-release
cmake --build build --target install --config Release
ctest -C Release --test-dir build
MINGW
Mingw is not tested (=unsupported) in 2.1.0 but it was by version 2.0 and it may be in future. This section is a placeholder from the old release (BTW if it works please comment in the forum)
Todo
Describe how to install and configure mingw
Prerequistites:
Powershell
7zip
git
cmake
Install and compile boost:
wget https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.7z
7z x boost_1_64_0.7z -oC:/local
cd "C:\local\boost_1_64_0"
bootstrap.bat gcc
b2.exe -d0 --with-date_time --with-test --with-filesystem --with-program_options --with-regex --with-serialization --with-system runtime-link=static toolset=gcc --prefix=C:\local\boost_1_68_0\boost-mingw install
cd C:/local/boost_1_64_0/boost-mingw/lib
dir
Verify boost is really compiled. Go to the folder where you want to download licensecc
git clone --recursive https://github.com/open-license-manager/licensecc.git
cd licensecc/build && cmake -G "MinGW Makefiles" -DBOOST_ROOT="C:/local/boost_1_68_0/boost-mingw" -DBoost_ARCHITECTURE="-x64" -DCMAKE_CXX_COMPILER_ARCHITECTURE_ID="x64" -DCMAKE_SH="CMAKE_SH-NOTFOUND" ..
cmake --build . --target install --config Release
And then you can test it:
ctest -C Release