You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by fg...@apache.org on 2022/07/26 12:44:54 UTC

[nifi-minifi-cpp] 03/04: MINIFICPP-1878 Enable Ninja build in Windows builds

This is an automated email from the ASF dual-hosted git repository.

fgerlits pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git

commit 0bf8ce968bdebfa6867eb339049bfabca19e5df0
Author: Gabor Gyimesi <ga...@gmail.com>
AuthorDate: Mon Jul 4 12:04:08 2022 +0200

    MINIFICPP-1878 Enable Ninja build in Windows builds
    
    Do not use ninja in CI:
    The ninja build does not seem to be faster in the CI environment
    probably due to the limited 2 threads available.
    
    Signed-off-by: Ferenc Gerlits <fg...@gmail.com>
    This closes #1364
---
 CMakeLists.txt                          |  18 +++---
 Windows.md                              |   1 +
 cmake/Abseil.cmake                      |   1 +
 cmake/BundledCivetWeb.cmake             | 107 --------------------------------
 cmake/CivetWeb.cmake                    |  44 +++++++++++++
 cmake/civetweb/dummy/FindCivetWeb.cmake |  22 -------
 extensions/civetweb/CMakeLists.txt      |  14 ++---
 extensions/openwsman/CMakeLists.txt     |   2 +-
 thirdparty/civetweb/civetweb.patch      |  29 ---------
 win_build_vs.bat                        |   8 ++-
 10 files changed, 68 insertions(+), 178 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 327060891..3db06e7ba 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -325,8 +325,7 @@ if ((ENABLE_OPENWSMAN AND NOT DISABLE_CIVET AND NOT DISABLE_CURL) OR ENABLE_ALL
 endif()
 
 if (ENABLE_ALL OR ENABLE_PROMETHEUS OR NOT DISABLE_CIVET)
-	include(BundledCivetWeb)
-	use_bundled_civetweb(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
+	include(CivetWeb)
 	list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/civetweb/dummy")
 endif()
 
@@ -474,16 +473,13 @@ if(WIN32)
 		set(CPACK_WIX_TEMPLATE "${CMAKE_CURRENT_SOURCE_DIR}/msi/WixWinMergeModules.wsi")
 	else()
 		message("Creating installer with redistributables")
-		if(CMAKE_VS_PLATFORM_TOOLSET STREQUAL "v141")
-			file(GLOB VCRUNTIME_X86_REDIST_CRT_DIR "${VCRUNTIME_REDIST_DIR}/x86/Microsoft.VC141.CRT")
-			file(GLOB VCRUNTIME_X64_REDIST_CRT_DIR "${VCRUNTIME_REDIST_DIR}/x64/Microsoft.VC141.CRT")
-		elseif(CMAKE_VS_PLATFORM_TOOLSET STREQUAL "v142")
-			file(GLOB VCRUNTIME_X86_REDIST_CRT_DIR "${VCRUNTIME_REDIST_DIR}/x86/Microsoft.VC142.CRT")
-			file(GLOB VCRUNTIME_X64_REDIST_CRT_DIR "${VCRUNTIME_REDIST_DIR}/x64/Microsoft.VC142.CRT")
-		endif()
-
-		if (NOT VCRUNTIME_X86_REDIST_CRT_DIR OR NOT VCRUNTIME_X64_REDIST_CRT_DIR)
+		file(GLOB VC_RUNTIME_X86_REDIST_CRT_DIR_LIST LIST_DIRECTORIES true "${VCRUNTIME_REDIST_DIR}/x86/Microsoft.VC*.CRT")
+		file(GLOB VC_RUNTIME_X64_REDIST_CRT_DIR_LIST LIST_DIRECTORIES true "${VCRUNTIME_REDIST_DIR}/x64/Microsoft.VC*.CRT")
+		if (NOT VC_RUNTIME_X86_REDIST_CRT_DIR_LIST OR NOT VC_RUNTIME_X64_REDIST_CRT_DIR_LIST)
 			message(FATAL_ERROR "Could not find the VC Redistributable. Please set VCRUNTIME_X86_REDIST_CRT_DIR and VCRUNTIME_X64_REDIST_CRT_DIR manually!")
+		else()
+			list(GET VCRUNTIME_X86_REDIST_CRT_DIR 0 VC_RUNTIME_X86_REDIST_CRT_DIR_LIST)
+			list(GET VCRUNTIME_X64_REDIST_CRT_DIR 0 VC_RUNTIME_X64_REDIST_CRT_DIR_LIST)
 		endif()
 
 		if(CMAKE_SIZEOF_VOID_P EQUAL 8)
diff --git a/Windows.md b/Windows.md
index 8a7bfb1cc..bdf9bbd64 100644
--- a/Windows.md
+++ b/Windows.md
@@ -74,6 +74,7 @@ After the build directory it will take optional parameters modifying the CMake c
 | /D | Builds RelWithDebInfo build instead of Release |
 | /DD | Builds Debug build instead of Release |
 | /CI | Sets STRICT_GSL_CHECKS to AUDIT |
+| /NINJA | Uses Ninja build system instead of MSBuild |
 
 Examples:
  - 32-bit build with kafka, disabling tests, enabling MSI creation: `win_build_vs.bat build32 /T /K /P`
diff --git a/cmake/Abseil.cmake b/cmake/Abseil.cmake
index 5df8063ba..48bb01712 100644
--- a/cmake/Abseil.cmake
+++ b/cmake/Abseil.cmake
@@ -19,6 +19,7 @@
 include(FetchContent)
 set(ABSL_PROPAGATE_CXX_STD ON CACHE INTERNAL absl-propagate-cxx)
 set(ABSL_ENABLE_INSTALL ON CACHE INTERNAL "")
+set(BUILD_TESTING OFF CACHE STRING "" FORCE)
 FetchContent_Declare(
         absl
         URL      https://github.com/abseil/abseil-cpp/archive/refs/tags/20211102.0.tar.gz
diff --git a/cmake/BundledCivetWeb.cmake b/cmake/BundledCivetWeb.cmake
deleted file mode 100644
index 88e5b4d15..000000000
--- a/cmake/BundledCivetWeb.cmake
+++ /dev/null
@@ -1,107 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-function(use_bundled_civetweb SOURCE_DIR BINARY_DIR)
-    message("Using bundled civetweb")
-
-    # Define patch step
-    set(PC "${Patch_EXECUTABLE}" -p1 -i "${SOURCE_DIR}/thirdparty/civetweb/civetweb.patch")
-
-    set(LIBDIR "lib")
-    # Define byproducts
-    if (WIN32)
-        set(SUFFIX "lib")
-    else()
-        set(PREFIX "lib")
-        include(GNUInstallDirs)
-        string(REPLACE "/" ";" LIBDIR_LIST ${CMAKE_INSTALL_LIBDIR})
-        list(GET LIBDIR_LIST 0 LIBDIR)
-        set(SUFFIX "a")
-    endif()
-
-    set(BYPRODUCTS
-            "${LIBDIR}/${PREFIX}civetweb.${SUFFIX}"
-            "${LIBDIR}/${PREFIX}civetweb-cpp.${SUFFIX}"
-            )
-
-    set(CIVETWEB_BIN_DIR "${BINARY_DIR}/thirdparty/civetweb-install/" CACHE STRING "" FORCE)
-
-    FOREACH(BYPRODUCT ${BYPRODUCTS})
-        LIST(APPEND CIVETWEB_LIBRARIES_LIST "${CIVETWEB_BIN_DIR}/${BYPRODUCT}")
-    ENDFOREACH(BYPRODUCT)
-
-    # Set build options
-    set(CIVETWEB_CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
-            -DCMAKE_INSTALL_PREFIX=${CIVETWEB_BIN_DIR}
-            -DCMAKE_PREFIX_PATH=${CIVETWEB_BIN_DIR}
-            -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=OFF
-            -DCIVETWEB_BUILD_TESTING=OFF
-            -DCIVETWEB_ENABLE_DUKTAPE=OFF
-            -DCIVETWEB_ENABLE_LUA=OFF
-            -DCIVETWEB_ENABLE_CXX=ON
-            -DCIVETWEB_ALLOW_WARNINGS=ON
-            -DCIVETWEB_ENABLE_ASAN=OFF)
-    if (OPENSSL_OFF)
-        list(APPEND CIVETWEB_CMAKE_ARGS -DCIVETWEB_ENABLE_SSL=OFF)
-    endif()
-
-    append_third_party_passthrough_args(CIVETWEB_CMAKE_ARGS "${CIVETWEB_CMAKE_ARGS}")
-
-    # Build project
-    ExternalProject_Add(
-            civetweb-external
-            URL "https://github.com/civetweb/civetweb/archive/v1.12.tar.gz"
-            URL_HASH "SHA256=8cab1e2ad8fb3e2e81fed0b2321a5afbd7269a644c44ed4c3607e0a212c6d9e1"
-            SOURCE_DIR "${BINARY_DIR}/thirdparty/civetweb-src"
-            LIST_SEPARATOR % # This is needed for passing semicolon-separated lists
-            CMAKE_ARGS ${CIVETWEB_CMAKE_ARGS}
-            PATCH_COMMAND ${PC}
-            BUILD_BYPRODUCTS "${CIVETWEB_LIBRARIES_LIST}"
-            EXCLUDE_FROM_ALL TRUE
-    )
-
-    # Set dependencies
-    if (NOT OPENSSL_OFF)
-        add_dependencies(civetweb-external OpenSSL::SSL OpenSSL::Crypto)
-    endif()
-
-    # Set variables
-    set(CIVETWEB_FOUND "YES" CACHE STRING "" FORCE)
-    set(CIVETWEB_INCLUDE_DIR "${CIVETWEB_BIN_DIR}/include" CACHE STRING "" FORCE)
-    set(CIVETWEB_LIBRARIES "${CIVETWEB_BIN_DIR}/${LIBDIR}/${PREFIX}civetweb.${SUFFIX}" "${CIVETWEB_BIN_DIR}/${LIBDIR}/${PREFIX}civetweb-cpp.${SUFFIX}" CACHE STRING "" FORCE)
-
-    # Set exported variables for FindPackage.cmake
-    set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} "-DEXPORTED_CIVETWEB_INCLUDE_DIR=${CIVETWEB_INCLUDE_DIR}" CACHE STRING "" FORCE)
-    set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} "-DEXPORTED_CIVETWEB_LIBRARIES=${CIVETWEB_LIBRARIES}" CACHE STRING "" FORCE)
-
-    # Create imported targets
-    file(MAKE_DIRECTORY ${CIVETWEB_INCLUDE_DIR})
-
-    add_library(CIVETWEB::c-library STATIC IMPORTED GLOBAL)
-    set_target_properties(CIVETWEB::c-library PROPERTIES IMPORTED_LOCATION "${CIVETWEB_BIN_DIR}/${LIBDIR}/${PREFIX}civetweb.${SUFFIX}")
-    set_property(TARGET CIVETWEB::c-library APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CIVETWEB_INCLUDE_DIR})
-    add_dependencies(CIVETWEB::c-library civetweb-external)
-    if (NOT OPENSSL_OFF)
-        target_link_libraries(CIVETWEB::c-library INTERFACE OpenSSL::SSL OpenSSL::Crypto Threads::Threads)
-    endif()
-
-    add_library(CIVETWEB::civetweb-cpp STATIC IMPORTED GLOBAL)
-    set_target_properties(CIVETWEB::civetweb-cpp PROPERTIES IMPORTED_LOCATION "${CIVETWEB_BIN_DIR}/${LIBDIR}/${PREFIX}civetweb-cpp.${SUFFIX}")
-    target_link_libraries(CIVETWEB::civetweb-cpp INTERFACE CIVETWEB::c-library)
-    add_dependencies(CIVETWEB::civetweb-cpp civetweb-external)
-    add_library(civetweb::civetweb-cpp ALIAS CIVETWEB::civetweb-cpp)
-endfunction(use_bundled_civetweb)
diff --git a/cmake/CivetWeb.cmake b/cmake/CivetWeb.cmake
new file mode 100644
index 000000000..dc7cc4b19
--- /dev/null
+++ b/cmake/CivetWeb.cmake
@@ -0,0 +1,44 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+include(FetchContent)
+
+set(CIVETWEB_ENABLE_SSL_DYNAMIC_LOADING "OFF" CACHE STRING "" FORCE)
+set(CIVETWEB_BUILD_TESTING "OFF" CACHE STRING "" FORCE)
+set(CIVETWEB_ENABLE_DUKTAPE "OFF" CACHE STRING "" FORCE)
+set(CIVETWEB_ENABLE_LUA "OFF" CACHE STRING "" FORCE)
+set(CIVETWEB_ENABLE_CXX "ON" CACHE STRING "" FORCE)
+set(CIVETWEB_ALLOW_WARNINGS "ON" CACHE STRING "" FORCE)
+set(CIVETWEB_ENABLE_ASAN "OFF" CACHE STRING "" FORCE)
+
+FetchContent_Declare(civetweb
+    GIT_REPOSITORY "https://github.com/civetweb/civetweb.git"
+    GIT_TAG "4447b6501d5c568b4c6c0940eac801ec690b2250" # commit containing fix for MSVC issue https://github.com/civetweb/civetweb/issues/1024
+)
+
+FetchContent_MakeAvailable(civetweb)
+
+add_dependencies(civetweb-c-library OpenSSL::Crypto OpenSSL::SSL)
+add_dependencies(civetweb-cpp OpenSSL::Crypto OpenSSL::SSL)
+
+if (NOT WIN32)
+  target_compile_options(civetweb-c-library PRIVATE -Wno-error)
+  target_compile_options(civetweb-cpp PRIVATE -Wno-error)
+endif()
+
+add_library(civetweb::c-library ALIAS civetweb-c-library)
+add_library(civetweb::civetweb-cpp ALIAS civetweb-cpp)
diff --git a/cmake/civetweb/dummy/FindCivetWeb.cmake b/cmake/civetweb/dummy/FindCivetWeb.cmake
deleted file mode 100644
index 420db1132..000000000
--- a/cmake/civetweb/dummy/FindCivetWeb.cmake
+++ /dev/null
@@ -1,22 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-if (NOT CIVETWEB_FOUND)
-    set(CIVETWEB_FOUND "YES" CACHE STRING "" FORCE)
-    set(CIVETWEB_INCLUDE_DIR "${EXPORT_CIVETWEB_INCLUDE_DIR}" CACHE STRING "" FORCE)
-    set(CIVETWEB_LIBRARIES "${EXPORT_CIVETWEB_LIBRARIES}" CACHE STRING "" FORCE)
-endif()
\ No newline at end of file
diff --git a/extensions/civetweb/CMakeLists.txt b/extensions/civetweb/CMakeLists.txt
index e7ac23da5..7c41ebb99 100644
--- a/extensions/civetweb/CMakeLists.txt
+++ b/extensions/civetweb/CMakeLists.txt
@@ -23,16 +23,16 @@ endif()
 
 include(${CMAKE_SOURCE_DIR}/extensions/ExtensionHeader.txt)
 
-include_directories(${CMAKE_SOURCE_DIR}/libminifi/include
-                    ${CMAKE_SOURCE_DIR}/libminifi/include/core
-                    ${CMAKE_SOURCE_DIR}/thirdparty/
-                    ./include)
-
 file(GLOB SOURCES  "processors/*.cpp" "protocols/*.cpp")
 
 add_library(minifi-civet-extensions SHARED ${SOURCES})
-target_link_libraries(minifi-civet-extensions ${LIBMINIFI} Threads::Threads)
-target_link_libraries(minifi-civet-extensions CIVETWEB::c-library CIVETWEB::civetweb-cpp)
+target_include_directories(minifi-civet-extensions BEFORE PUBLIC
+                           ${CMAKE_SOURCE_DIR}/libminifi/include
+                           ${CMAKE_SOURCE_DIR}/libminifi/include/core
+                           ${CMAKE_SOURCE_DIR}/thirdparty/
+                           ${civetweb_SOURCE_DIR}/include
+                           ./include)
+target_link_libraries(minifi-civet-extensions ${LIBMINIFI} Threads::Threads civetweb::civetweb-cpp civetweb::c-library)
 
 register_extension(minifi-civet-extensions CIVETWEB CIVETWEB "This enables ListenHTTP" "extensions/civetweb/tests")
 register_extension_linter(minifi-civet-extensions-linter)
diff --git a/extensions/openwsman/CMakeLists.txt b/extensions/openwsman/CMakeLists.txt
index 980c17051..d6322600f 100644
--- a/extensions/openwsman/CMakeLists.txt
+++ b/extensions/openwsman/CMakeLists.txt
@@ -31,7 +31,7 @@ file(GLOB SOURCES "processors/*.cpp")
 add_library(minifi-openwsman SHARED ${SOURCES})
 
 target_link_libraries(minifi-openwsman ${LIBMINIFI} Threads::Threads)
-target_link_libraries(minifi-openwsman OpenWSMAN::libwsman CIVETWEB::civetweb-cpp CIVETWEB::c-library LibXml2::LibXml2)
+target_link_libraries(minifi-openwsman OpenWSMAN::libwsman civetweb::civetweb-cpp civetweb::c-library LibXml2::LibXml2)
 
 register_extension(minifi-openwsman "OPENWSMAN EXTENSIONS" OPENWSMAN-EXTENSIONS "This enables Openwsman support")
 register_extension_linter(minifi-openwsman-linter)
diff --git a/thirdparty/civetweb/civetweb.patch b/thirdparty/civetweb/civetweb.patch
deleted file mode 100644
index dc574e483..000000000
--- a/thirdparty/civetweb/civetweb.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- a/cmake/AddCCompilerFlag.cmake
-+++ b/cmake/AddCCompilerFlag.cmake
-@@ -24,9 +24,8 @@ function(add_c_compiler_flag FLAG)
-   string(REPLACE "+" "X" SANITIZED_FLAG ${SANITIZED_FLAG})
-   string(REGEX REPLACE "[^A-Za-z_0-9]" "_" SANITIZED_FLAG ${SANITIZED_FLAG})
-   string(REGEX REPLACE "_+" "_" SANITIZED_FLAG ${SANITIZED_FLAG})
--  set(CMAKE_REQUIRED_FLAGS "${FLAG}")
--  check_c_compiler_flag("" ${SANITIZED_FLAG})
--  if(${SANITIZED_FLAG})
-+  check_c_compiler_flag(${SANITIZED_FLAG} NO_DIAGNOSTICS_PRODUCED)
-+  if(${NO_DIAGNOSTICS_PRODUCED})
-     set(VARIANT ${ARGV1})
-     if(ARGV1)
-       string(REGEX REPLACE "[^A-Za-z_0-9]" "_" VARIANT "${VARIANT}")
-diff --git a/cmake/AddCXXCompilerFlag.cmake b/cmake/AddCXXCompilerFlag.cmake
---- a/cmake/AddCXXCompilerFlag.cmake
-+++ b/cmake/AddCXXCompilerFlag.cmake
-@@ -24,9 +24,8 @@ function(add_cxx_compiler_flag FLAG)
-   string(REPLACE "+" "X" SANITIZED_FLAG ${SANITIZED_FLAG})
-   string(REGEX REPLACE "[^A-Za-z_0-9]" "_" SANITIZED_FLAG ${SANITIZED_FLAG})
-   string(REGEX REPLACE "_+" "_" SANITIZED_FLAG ${SANITIZED_FLAG})
--  set(CMAKE_REQUIRED_FLAGS "${FLAG}")
--  check_cxx_compiler_flag("" ${SANITIZED_FLAG})
--  if(${SANITIZED_FLAG})
-+  check_cxx_compiler_flag(${SANITIZED_FLAG} NO_DIAGNOSTICS_PRODUCED)
-+  if(${NO_DIAGNOSTICS_PRODUCED})
-     set(VARIANT ${ARGV1})
-     if(ARGV1)
-       string(REGEX REPLACE "[^A-Za-z_0-9]" "_" VARIANT "${VARIANT}")
diff --git a/win_build_vs.bat b/win_build_vs.bat
index c91d210fe..c1af2bfcf 100755
--- a/win_build_vs.bat
+++ b/win_build_vs.bat
@@ -73,12 +73,18 @@ for %%x in (%*) do (
     if [%%~x] EQU [/NONFREEUCRT] set "redist=-DMSI_REDISTRIBUTE_UCRT_NONASL=ON"
     if [%%~x] EQU [/L]           set build_linter=ON
     if [%%~x] EQU [/RO]          set real_odbc=ON
+    if [%%~x] EQU [/NINJA]       set generator="Ninja"
 )
 
 mkdir %builddir%
 pushd %builddir%\
 
-cmake -G %generator% -A %build_platform% -DINSTALLER_MERGE_MODULES=%installer_merge_modules% -DTEST_CUSTOM_WEL_PROVIDER=%test_custom_wel_provider% -DENABLE_SQL=%build_SQL% -DUSE_REAL_ODBC_TEST_DRIVER=%real_odbc% -DCMAKE_BUILD_TYPE_INIT=%cmake_build_type% -DCMAKE_BUILD_TYPE=%cmake_build_type% -DWIN32=WIN32 -DENABLE_LIBRDKAFKA=%build_kafka% -DENABLE_JNI=%build_jni% -DOPENSSL_OFF=OFF -DENABLE_COAP=%build_coap% -DENABLE_AWS=%build_AWS% -DENABLE_PDH=%build_PDH% -DENABLE_AZURE=%build_azure% -D [...]
+if [%generator%] EQU ["Ninja"] (
+    set "buildcmd=ninja && copy bin\minifi.exe main\"
+) else (
+    set "buildcmd=msbuild /m nifi-minifi-cpp.sln /property:Configuration=%cmake_build_type% /property:Platform=%build_platform% && copy bin\%cmake_build_type%\minifi.exe main\"
+)
+cmake -G %generator% -DINSTALLER_MERGE_MODULES=%installer_merge_modules% -DTEST_CUSTOM_WEL_PROVIDER=%test_custom_wel_provider% -DENABLE_SQL=%build_SQL% -DUSE_REAL_ODBC_TEST_DRIVER=%real_odbc% -DCMAKE_BUILD_TYPE_INIT=%cmake_build_type% -DCMAKE_BUILD_TYPE=%cmake_build_type% -DWIN32=WIN32 -DENABLE_LIBRDKAFKA=%build_kafka% -DENABLE_JNI=%build_jni% -DOPENSSL_OFF=OFF -DENABLE_COAP=%build_coap% -DENABLE_AWS=%build_AWS% -DENABLE_PDH=%build_PDH% -DENABLE_AZURE=%build_azure% -DENABLE_SFTP=%build_S [...]
 IF %ERRORLEVEL% NEQ 0 EXIT /b %ERRORLEVEL%
 if [%cpack%] EQU [ON] (
     cpack -C %cmake_build_type%