This is a guide for building MiNiFi C++ binaries for Windows. Follow it to create the artifacts and document the process as described in the documentation section. When packaging, the resulting MSI cannot be redistributed under the Apache License 2.0, because it includes Microsoft redistributable DLLs.

Required environment

Operating System: Microsoft Windows 10 x64 or later

Recommended hardware: at least 4 CPU cores and 16 GiB RAM

Required software

  • Microsoft Visual Studio 2022 Community or Enterprise
    • Install with the "Desktop development with C++" workload, it should include all needed components
  • CMake >=3.24 (https://cmake.org/download/)
    • Choose the "Add CMake to the system path..." option when installing
  • git (https://git-scm.com/download/win)
  • WiX Toolset >= 3.11 (https://wixtoolset.org/releases/)
    • WiX Toolset requires .NET 3.5 to install, which you can install via the "Turn Windows features on or off" utility
  • Perl (Strawberry Perl http://strawberryperl.com/)
    • If Strawberry Perl is used the ${StrawberryPerlRoot}\c\bin directory should not be part of the PATH variable, or make sure to find git's patch executable before that, as Strawberry Perl's patch.exe will be found as the patch executable in the configure phase instead of the git patch executable. When installed via scoop, this is not a problem, because only perl binaries are added to the PATH.
    • An alternative is ActiveState Perl, https://www.activestate.com/ActivePerl for which you may need to explicitly build the Perl module Win32/Console.pm via https://platform.activestate.com/ActiveState and then download it)
  • NASM (https://www.nasm.us)
    • Make sure to add NASM to the system PATH variable

Build process

To build the 64-bit msi execute the following steps:

  1. Create the C:\Development directory
  2. Open x64 Native Tools Command Prompt for VS 2022
  3. Execute the following commands
    cd C:\Development
    git clone https://github.com/apache/nifi-minifi-cpp.git
    cd nifi-minifi-cpp
    git checkout <tag>
    win_build_vs.bat build64 /T /P
  4. The artifact will be at C:\Development\nifi-minifi-cpp\build64\nifi-minifi-cpp.msi

(Optional) If you want to build the 32-bit msi as well, execute the following steps (after completing the 64-bit build):

  1. Open x86 Native Tools Command Prompt for VS 2022
  2. Execute the following commands
    cd C:\Development\nifi-minifi-cpp
    win_build_vs.bat build32 /T /P
  3. The artifact will be at C:\Development\nifi-minifi-cpp\build32\nifi-minifi-cpp.msi

Documentation

To document how a particulate release can be built, substitute the example values:

InformationHow to obtainValue
git tag of the used sourceKnowing this is a precondition for starting the buildmain
OS versionOpen "About your PC" and use Edition, Version and OS build under the Windows specifications sectionWindows 10 Pro 2004 19041.1052
MSVC versionRun cl from x64 Native Tools Command Prompt for VS 2022 and extract the version19.37.32825
VC Redistributable Merge Module VersionRun set VCToolsRedistDir from x64 Native Tools Command Prompt for VS 2022 and extract the version14.36.32532
CMake versionRun cmake --version and extract the version3.24
git versionRun git --version and extract the version2.30.0.windows.2
WiX Toolset versionRun the WiX application which displays the versionv3.11.2.4516



  • No labels