-
Tomáš Pecka authored
Long story short, tclap<=1.2.4 does not work with g++-11 compiler. We sent a patch into TClap which was merged [1], however, new version was not yet released so the distros have not included the fix in the packaged versions of TClap. This is becoming kind of a blocker for people who want to compile ALT. I figured out that CMake can download external projects and if you do things *magically right* [2] you can also convince the external projects to be built before your project so you can depend on them. So, CMake should now download TClap if you configure it to build aql2. As tclap is header-only, compilation of aql2 modules should include the directory where tclap is downloaded (and prefer it to the /usr/include system path). Unfortunately, tclap triggers a lot of warnings for us (hi, -Wsuggest-override and -Werror) that we haven't seen before because system headers do not trigger warnings. Fortunately, CMake can configure includes to be SYSTEM includes (and use -isystem instead -I for g++ builds) which make things working again. However, this is just a really big hack, AFAIK. (I, personally, still think we should use some new, C++17-ready argument parsing library. There is plenty of them.) [1] https://sourceforge.net/p/tclap/code/ci/52a118c0edb20f64e8da88dc9d0bfee63f2232ac/ [2] https://crascit.com/2015/07/25/cmake-gtest/ Bug: #214 Bug: https://sourceforge.net/p/tclap/bugs/33/
Tomáš Pecka authoredLong story short, tclap<=1.2.4 does not work with g++-11 compiler. We sent a patch into TClap which was merged [1], however, new version was not yet released so the distros have not included the fix in the packaged versions of TClap. This is becoming kind of a blocker for people who want to compile ALT. I figured out that CMake can download external projects and if you do things *magically right* [2] you can also convince the external projects to be built before your project so you can depend on them. So, CMake should now download TClap if you configure it to build aql2. As tclap is header-only, compilation of aql2 modules should include the directory where tclap is downloaded (and prefer it to the /usr/include system path). Unfortunately, tclap triggers a lot of warnings for us (hi, -Wsuggest-override and -Werror) that we haven't seen before because system headers do not trigger warnings. Fortunately, CMake can configure includes to be SYSTEM includes (and use -isystem instead -I for g++ builds) which make things working again. However, this is just a really big hack, AFAIK. (I, personally, still think we should use some new, C++17-ready argument parsing library. There is plenty of them.) [1] https://sourceforge.net/p/tclap/code/ci/52a118c0edb20f64e8da88dc9d0bfee63f2232ac/ [2] https://crascit.com/2015/07/25/cmake-gtest/ Bug: #214 Bug: https://sourceforge.net/p/tclap/bugs/33/
Algorithms Library Toolkit
For documentation and quickstart see our website.
What is it?
The Algorithms library toolkit (ALT) is a collection of implementations of various types of automata, grammars, and other common structires along with mathematical implementation of algorithms over these structures. Originaly developed at Faculty of Information Technology of Czech Technical University in Prague. It supposed to be a reference implementation of formal algorithms as-are in papers. It's interface allows practical reuse of existing algorithms in form of by pipe comunicating, partially using a query language in command line, and partially using a GUI interface.
The Latest Version
Packages and docker images with latest stable and nightly versions can be found visiting at website.
Requirements
C++-20 capable compiler, cmake
(plus make
or ninja
). Linux platform (99.9 % percent of the features
should work on different platforms but there are still small parts of code that are Linux only).
Build tools:
cmake >= 3.12
-
g++ >= 10.0
orclang++ >= 9.0
(compilation in C++20)
Libraries:
-
tclap
(header-only argument parsing library, fetched by CMake and git automatically during build process) libxml2
readline
For GUI, you will need also the following libraries. However, GUI does not build by default now. Use cmake option -DWITH_AGUI=ON
to build it:
Qt5-qtbase >= 5.7
jsoncpp
graphviz
Optional dependencies:
-
doxygen
(for documentation generation) -
graphviz
(for documentation generation and automata visualizations)
Installation
You can build from sources using cmake or download packages or sources of stable release
We recommend running the testsuite using ctest
as well.
We support common cmake options, additional ones are:
-
-DWITH_AGUI=ON
to build deprecated GUI part -
-DWITH_DOCS=ON
to build adoxygen
target to generate API docs.
Documentation
In order to generate API documentation, run cmake with -DWITH_DOCS=ON
and then invoke doxygen
target.
The high-level documentation is located at ALT website.
Contributing
Feel free to fork this project and send your merge requests there.
In case you want to run our Gitlab CI, remove all the following parts of code in .gitlab-ci.yml
.
tags:
- altbuilder
Developers
Editor configuration for this project is provided by editorconfig.
Issues and bugs
Please use our issue tracker.
Licensing
Please see LICENSE file.
Contacts
- You can contact the authors using our issue tracker or by email.
Authors
- Ing. Jan Trávníček,
- Ing. Tomáš Pecka,
- Ing. Štěpán Plachý,
- et. al.