|
|
| (15 intermediate revisions by 8 users not shown) |
| Line 1: |
Line 1: |
| '''Work is a on going to get this build system functional!'''
| | {{Outdated|message=Developer documentation has been moved to [https://gitlab.com/inkscape/inkscape/-/blob/master/doc/readme.md GitLab].}} |
| | |
| Cmake is a cross-platform build system know to work on all major platforms we support (*nix, Windows, OSX).
| |
| | |
| CMake is an extensible, open-source system that has many powerful features.
| |
| Those features include:
| |
| | |
| * Supports complex, large build environments. CMake has been proven in several large projects (KDE, ParaView, SecondLife, Scribus)
| |
| * Generates native build files (e.g., makefiles on Unix; workspaces/projects on MS Visual C++). Therefore, standard tools can be used on any platform/compiler configuration.
| |
| * Powerful system introspection abilities including the ability to find installed include files, libraries and executables. Also the ability to test the compiler for supported features.
| |
| * Integrated testing system called CTest.
| |
| * Integrated packaging system called CPack.
| |
| * Easy integration with CDash and Dart dashboard servers.
| |
| * Powerful scripting language with simple syntax.
| |
| * Supports in-place and out-of-place builds. Multiple compilation trees are possible from a single source tree.
| |
| * Can be easily extended to add new features.
| |
| * CMake is open source, under a liberal BSD license.
| |
| * CMake operates with a cache designed to be interfaced with a graphical editor. The cache provides optional interaction to conditionally control the build process.
| |
| * Ability to create Mac OSX Frameworks and Application Bundles.
| |
| * Supports adding complex custom rules to the build.
| |
| | |
| == How you can help ==
| |
| | |
| We have completed the building of the CMakeLists.txt for almost everything needed.
| |
| We are now working on get the build to compile properly. See below Testing/Using to help.
| |
| | |
| There is a separate [[CMake Tasks]] page with things that are left to do w.r.t. cmake building of Inkscape.
| |
| | |
| == SIMPLE CmakeLists.txt ==
| |
| SET(libavoid_SRC
| |
| connector.cpp
| |
| geometry.cpp
| |
| graph.cpp
| |
| makepath.cpp
| |
| polyutil.cpp
| |
| region.cpp
| |
| router.cpp
| |
| shape.cpp
| |
| static.cpp
| |
| timer.cpp
| |
| vertices.cpp
| |
| visibility.cpp
| |
| )
| |
| | |
| == SIMPLE with single sub-directory Cmakelists.txt ==
| |
| | |
| SET(libavoid_SRC
| |
| connector.cpp
| |
| geometry.cpp
| |
| graph.cpp
| |
| makepath.cpp
| |
| polyutil.cpp
| |
| region.cpp
| |
| router.cpp
| |
| shape.cpp
| |
| static.cpp
| |
| timer.cpp
| |
| vertices.cpp
| |
| visibility.cpp
| |
| #Add our subdirectory sourcelist Var
| |
| ${libavoid_parameter_SRC}
| |
| )
| |
| # this adds a single sub-directory
| |
| ADD_SUBDIRECTORY(parameter)
| |
| | |
| == Using CMake to build Inkscape ==
| |
| | |
| Experience with Scribus '''strongly''' suggests using an "out of source"build arrangement. E.g.
| |
| | |
| <pre>
| |
| mkdir buildinkscape
| |
| cd buildinkscape
| |
| cmake ./path/to/inkscape/sources
| |
| make
| |
| </pre>
| |
| | |
| References:
| |
| [http://docs.scribus.net/index.php?lang=en&page=install4 Installing Scribus with Cmake] <br />
| |
| [http://docs.scribus.net/index.php?lang=en&page=install5 Installing with CMake on OSX]
| |
| | |
| == Using CMake to run tests ==
| |
| | |
| First, install Google Test framework by running download-gtest.sh in root of inkscape source:
| |
| | |
| <pre>
| |
| cd /path/to/inkscape
| |
| ./download-gtest.sh
| |
| </pre>
| |
| | |
| Then, toggle the CMake config var "WITH_GTEST" to ON, e.g. by editing CMakeCache.txt or by using ccmake. Don't forget to re-run cmake after the configuration change:
| |
| | |
| <pre>
| |
| cd /path/to/buildinkscape
| |
| # modify CMakeCache.txt
| |
| cmake ../inkscape
| |
| </pre>
| |
| | |
| Finally, run "make check" from same directory to run the tests:
| |
| | |
| <pre>
| |
| make check
| |
| </pre>
| |
This page is outdated. It is kept for historical reasons, e.g. to document specific decisions in Inkscape development.
Developer documentation has been moved to GitLab.