The build process is divided into several parts: configuration and
building, followed by (optional) testing and installation. The
configuration part is performed with CMake. The build part is
performed by invoking the chosen build tool such as
or by opening the generated project files in your IDE, and building
from within the IDE.
The following are required before building Xalan-C++
Xalan-C++ uses the CMake build generator and
requires that be installed. Additionally, a build tool such as GNU
Ninja is required for building. CMake
supports a wide range of generators for several different compilers,
build tools and popular IDEs, including Eclipse, Kate, Visual Studio,
Sublime Text and more. Any of these may be used to build Xalan-C++.
cmake --help to display the full list of supported generators
for your platform.
Xalan-C++ is built upon the Xerces-C++ XML Parser library. You can either install a compatible binary distribution of Xerces-C/C++ or build your own from a source distribution of Xerces-C/C++. You can get more information on the Xerces-C/C++ distributions at the Xerces-C++ website.
If you want to take advantage of the support for number formatting, sorting, and encoding the ICU provides, you should also download and install the International Components for Unicode (ICU); see Using the ICU.
Besides the standard CMake variables, Xalan-C++ provides a number of project-specific options. You can specify one option for each category outlined below. If you do not specify anything for a particular category then CMake will select the most appropriate default, based upon the available options for your system. At the end of its execution, CMake prints the selected values for each category.
Transcoder (used to convert between internal UTF-16 and other encodings):
||use built-in transcoder (default)|
||use the ICU library|
Message Loader (used to access diagnostics messages):
||store the messages in memory (default)|
||store the messages using the ICU resource bundles (broken, do not use)|
||store the messages in the NLS message catalog using catopen/catgets (broken, do not use)|
System character-set encoding:
||use ASCII system encoding (default for most platforms)|
||use EBCDIC system encoding (default for OS390)|
Thread support is required and can not be disabled.
Shared libraries are built by default. You can use the
-DBUILD_SHARED_LIBS:BOOL=OFF option to build static libraries.
If you need to specify compiler executables that should be used to
build Xalan-C++, you can set the
CXX environment variables
cmake. Similarly, if you need to specify additional
compiler or linker options, you can set the
LDFLAGS environment variables. For example:
CC=gcc-8.4 CXX=g++-8.4 CFLAGS=-O3 CXXFLAGS=-O3 cmake …
If building on Windows, the specific Visual Studio version may be
selected with some generators, and this may be run from a normal
command prompt. If using a generic generator such as
cmake should be run from a Visual Studio command prompt, or in a
suitably configured environment, so that the correct compiler will be
Once the configuration part is complete you can run the build tool of
choice. This may be done generically using
. [--config=Debug|Release]. Alternatively, a specific build tool,
msbuild corresponding to the chosen
generator may be used directly. When invoked without a specific
target, it will build the Xalan-C++ library, all examples and all unit
If you would like to run the automated test suite, run
ctest [-V] [-C
Debug|Release]. This will run all tests. Additional
available, such as running a subset of the tests and running the tests
Finally, install the library and examples. This may be done
cmake --build . --target install
[--config=Debug|Release]. Alternatively, a specific build tool may
be used, e.g.
make install. To change the installation directory,
-DCMAKE_INSTALL_PREFIX=prefix CMake option.
Some platforms and configurations may require extra
cmake -LH to list the additional options, along with a short
description for each. For each of the selection categories mentioned
above, the help text will list the valid choices detected for your
cmake -LAH for all the additional advanced settings.
Note that different UNIX platforms use different system environment
variables for finding shared libraries. On Linux and Solaris, the
environment variable name is
LD_LIBRARY_PATH, on AIX it is
LIBPATH, on Mac OS X it is
DYLD_FALLBACK_LIBRARY_PATH, and on
HP-UX it is
Note that Windows (including Cygwin and MinGW), is different from the
UNIX platforms in the way it finds shared libraries at run time.
While UNIX platforms may use the
variable, Windows uses the
PATH environment variable if the library
is not in the same directory as the executable.
Several examples of configuring, building, testing and installing with CMake using different platforms, generators, and installation options are shown below:
mkdir build cd build cmake -G Ninja -DCMAKE_INSTALL_PREFIX=/opt/Xalan-c -DCMAKE_BUILD_TYPE=Release -Dnetwork-accessor=curl /path/to/Xalan-c/source ninja ctest -V -j 8 ninja install
mkdir build cd build cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/opt/Xalan-c -DCMAKE_BUILD_TYPE=Debug -Dmessage-loader=icu /path/to/Xalan-c/source make -j8 make test make install
In a command shell:
mkdir build cd build cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_INSTALL_PREFIX:PATH=D:\xalan-c \path\to\Xalan-c\source cmake --build . --config Debug ctest -V -C Debug -j 4 cmake --build . --config Debug --target install
At a Visual Studio 2019 command prompt:
mkdir build cd build cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE:PATH=D:\vcpkg\scripts\buildsystems\vcpkg.cmake -DCMAKE_INSTALL_PREFIX:PATH=D:\xalan-c \path\to\Xalan-c\source ninja ctest -V -j 4 ninja install