Version 27 (modified by 6 years ago) ( diff ) | ,
---|
Status Notice
The CMake build configuration is a community-maintained non-officially supported build setup for GEOS. All GEOS users who aim to rely on CMake, please respect Sandro's request stated in comment on ticket #576 :
*** The official build system is the GNU Automake one (for versions prior to GEOS 3.5). Starting at GEOS 3.5, we officially also support CMake. We will happily accept tickets for GEOS 3.5 against CMake. We would appreciate a patch if you have one, but not required.. ***
Building on Unix with CMake
This article describes how to use CMake build system to build and install GEOS from sources on Unix-like systems (Linux, Mac OS X, Solaris, *BSD, etc.) using GCC or any other supported compiler.
The CMake configuration for GEOS was introduced shortly after the GEOS 3.2.0 release (ticket #317).
Having CMake installed on Unix-like system, there are two ways of running CMake to configure and build a software with CMake:
- cmake - CLI program accepting options or running in interactive mode
- ccmake - program with curses-based GUI
Requirements
- CMake 3.1 or later
- Decent C++ compiler and C++ Standard Library, GNU GCC 4.x or later recommended
- GEOS source code.
Configure
It is highly recommended to build GEOS outside of the source code tree. For this purpose, prepare a build directory (from now on referred to as BUILDDIR):
$ git clone https://ghttps://git.osgeo.org/gitea/geos/geos.git $ mkdir build $ ls build geos $ cd build $ cmake ../geos $ make help
There is collection of CMake variables available to set by user to control various aspects of compilation and installation. For instance CMAKE_INSTALL_PREFIX variable which by default is set to /usr/local directory.
List of CMake options specific to GEOS:
- GEOS_ENABLE_TESTS - Set to OFF|ON (default) to control build of GEOS tests package
- GEOS_ENABLE_INLINE - Set to OFF|ON (default) to control GEOS compilation with small functions inlining
- GEOS_ENABLE_ASSERT - Set to ON|OFF (default) to build GEOS with assert() macro enabled (not available for Visual C++ compiler)
- GEOS_ENABLE_MACOSX_FRAMEWORK - Set to ON|OFF (default) to build a Mac OS X framework
- GEOS_ENABLE_MACOSX_FRAMEWORK_UNIXCOMPAT - Set to ON|OFF (default) to add compatibility with *nix library linking to the Mac OS X framework
Example:
$ cmake ../geos -DGEOS_ENABLE_TESTS=ON -DGEOS_ENABLE_INLINE=OFF
Note: when building a Mac OS X framework, you must specify the CMAKE_INSTALL_PREFIX. The default is /usr/local, and frameworks don't go there.
-DCMAKE_INSTALL_PREFIX=/Library/Frameworks
Build
In order to build GEOS C++ and C libraries, issue the command in BUILDDIR:
$ make
Test
In the CMake build system, testing capabilities are provided by CTest, which is distributed together with CMake.
After the build is ready, tests can be executed from inside BUILDDIR. Natively, CMake uses a target named test:
$ make test
For convenience, Autotools-like alias is also available:
$ make check
It is also possible to run the ctest program directly, without using a make target. This option gives access to a number of ctest command line options (see ctest --help for a listing).
$ ctest $ ctest --verbose
A list of GEOS test suites can be obtained by running ctest --show-only:
$ ctest --show-only # # Test project /home/dan/dev/libgeos/cmake-build-debug # Test #1: test_geos_unit # Test #2: test_xmltester # Test #3: test_bug234 # Test #4: test_sweep_line_speed # Test #5: perf_class_sizes # Test #6: perf_iterated_buffer # Test #7: perf_rectangle_intersects # Test #8: perf_memleak_mp_prep
A subset of test suites can then be run using a regular expression:
$ ctest --tests-regex test_ --parallel 4
Individual test classes within the test_geos_unit suite can be run by calling the test_geos_unit executable directly:
$ bin/test_geos_unit capi::GEOSNode
Install
In order to install both C and C++ API libraries as well as headers, stay on in BUILDDIR and execute:
$ make install
Uninstall
Still in BUILDDIR, run:
$ make uninstall
Open Tickets
No results