On linux. Most users haven't installed libc++-dev, but ANTLR is passing
the "--stdlib=libc++" argument. As a result, this won't compile. Users
will see:
```
/tmp/antlr4/runtime/Cpp/runtime/src/antlr4-common.h:8:10: fatal error:
'algorithm' file not found
```
This is caused by the "WITH_LIBCXX" option.
It was introduced by:
d46ef90aa0
It causes the option "--stdlib=libc++" to be appended by default.
I believe its default value should have been left as "Off".
With "off" by default, clang will use its default C++ library, which is
always available.
The WITH_LIBCXX option is kept, being able to change the C++ library
might be useful?
BUG=https://github.com/antlr/antlr4/issues/2898
Previously Visual C++ users were forced to link CRT statically,
i.e. use /MT flag whenever they want to use the static library.
Linker have an error if user tries to link a /MT static library
to a /MD executable.
This commit defaults the build to statically link with CRT, but
may be turned off if needed.
'antlr4-runtime' which imports the required runtime targets and
'antlr4-generator' which provides a convenient function to use the generator.
Only the latter one has a dependency to the Java package.
- Only require JRE
- Support out of tree build from antlr repostitory
- Support Superproject build with ExternalAntlr4Cpp cmake module
ExternalAntlr4Cpp module has quickstart documentation for people to be
able to start working quicly with antlr4cpp from the base demo sources
see source file for example.
- Reverted the change from RecognitionException to exception_ptr (and removed the make_exception_ptr() call). This is not needed and only leads to object slicing. Instead we check directly the given exception object for the individual handling in reportError() and use std::current_exception() to get the exception pointer for our contexts.
- Removed precompiled header stuff from cmake file for the same reasons as I did in the XCode project (Visual Studio still pending).
- Compiling with cmake brought up quite a number of new warnings. Some of them have to be disabled yet (dollar in identifier, four char constant, overloaded virtual). The others have all been fixed.
- Updated the README to include build instruction.