CMake based build support for APR on Microsoft Windows Status ------ This build support is currently intended only for Microsoft Windows. Prerequisites ------------- The following tools must be in PATH: * cmake, version 3.0 or later cmake version 3.1.3 or later is required to work with current OpenSSL releases. (OpenSSL is an optional prerequisite of APR.) * If using a command-line compiler: compiler and linker and related tools (Refer to the cmake documentation for more information.) Additional support libraries allow optional features of APR to be enabled: * Expat * Iconv * Libxml2 * SQlite3 * OpenSSL How to build ------------ 1. cd to a clean directory for building (i.e., don't build in your source tree) 2. Some cmake backends may want your compile tools in PATH. (Hint: "Visual Studio Command Prompt") 3. cmake -G "some backend, like 'Ninja' or 'NMake Makefiles'" -DCMAKE_INSTALL_PREFIX=d:/path/to/aprinst -DAPR-specific-flags d:/path/to/aprsource Alternately, use cmake-gui and update settings in the GUI. APR feature flags: Exactly one of APU_USE_EXPAT and APU_USE_LIBXML2 must be specified. APU_USE_EXPAT Use Expat as the underlying XML implementation Default: ON APU_USE_LIBXML2 Use libxml2 as the underlying XML implementation Default: OFF APR_INSTALL_PRIVATE_H Install extra .h files which are required when building httpd and Subversion but which aren't intended for use by applications. Default: OFF APU_HAVE_CRYPTO Build crypt support (only the OpenSSL implementation is currently supported) Default: OFF APU_HAVE_ODBC Build ODBC DBD driver Default: ON APR_HAVE_IPV6 Enable IPv6 support Default: ON APR_BUILD_TESTAPR Build APR test suite Default: OFF TEST_STATIC_LIBS Build the test suite to test the APR static library instead of the APR dynamic library. Default: OFF In order to build the test suite against both static and dynamic libraries, separate builds will be required, one with TEST_STATIC_LIBS set to ON. INSTALL_PDB Install .pdb files if generated. Default: ON LIBXML2_ICONV_INCLUDE_DIR, LIBXML2_ICONV_LIBRARIES If using libxml2 for the XML implementation and the build of libxml2 requires iconv, set these variables to allow iconv includes and libraries to be found. CMAKE_C_FLAGS_RELEASE, _DEBUG, _RELWITHDEBINFO, _MINSIZEREL CMAKE_BUILD_TYPE For NMake Makefiles the choices are at least DEBUG, RELEASE, RELWITHDEBINFO, and MINSIZEREL Other backends make have other selections. 4. build using chosen backend (e.g., "nmake install") Tested generators ----------------- 1. Ninja This has been tested successfully with the following: 1. Visual Studio 2019 and Visual Studio 2022 Known Bugs and Limitations -------------------------- * If include/apr.h or other generated files have been created in the source directory by another build system, they will be used unexpectedly and cause the build to fail. * Options should be provided for remaining features, along with finding any necessary libraries + APR_POOL_DEBUG + DBM: . APU_HAVE_GDBM . APU_HAVE_NDBM . APU_HAVE_DB + DBD: . APU_HAVE_PGSQL . APU_HAVE_MYSQL . APU_HAVE_SQLITE3 . APU_HAVE_SQLITE2 . APU_HAVE_ORACLE + CRYPTO: . APU_HAVE_NSS + APU_HAVE_ICONV * Static builds of APR modules are not supported. * XML implementation (i.e., Expat or libxml2) could support static XML impl with apr-2.lib. Generally: * Any feedback you can provide on your experiences with this build will be helpful.