* -Wsuggest-override is not supported by gcc before 5.0
* GCC prior to 5.0 should ignore not only -Wnon-virtual-dtor but also -Weffc++, otherwise non-virtual destructor problems will still be reported.
* The `#pragma GCC diagnostic push' should be used before setting up the temporary environment.
* When using GCC4.8, use manual lexical analysis instead of regular expressions.
* Add gcc4.8 stuff to travis file.
* -Wsuggest-override is not supported by gcc before 5.0
* GCC prior to 5.0 should ignore not only -Wnon-virtual-dtor but also -Weffc++, otherwise non-virtual destructor problems will still be reported.
* The `#pragma GCC diagnostic push' should be used before setting up the temporary environment.
* Improve formatting of help descriptions (#213)
* new function: cxxopts::Option::set_width(size_t width)
Set the size of a helpline.
* new function: cxxopts::Option::set_tab_expansion()
Expand the tabs in descriptions.
The tabsize 8 chars, base is start of description.
The descriptions are not disturbed by adding additional options.
* Allow newlines \n and tabs \t in descriptions.
Other changes (last commit/new commit):
* 1453/1471: size_t for OPTION_LONGEST and OPTION_DESC_GAP.
This prevents the static cast in 2086/2140.
* 2088/2142: in case of small width the value of
"width - longest - OPTION_DEC_GAP" becomes negative.
Because size_t is unsigned the result is a big number, and
the width of the column of the descriptions is not shortened.
* new 2143: When the given width is too small, it is set to
longest + OPTION_DESC_GAP + 10
* new 1570: A long description is broken into multiple lines, and
the iterator lastSpace remembers the begin of the last word.
But when the iterator current reaches the end of line, the whole
string from iterator is printed, which in soome cases is too
long. Thats why one blank is added to the description to trigger
the handling of lastSpace.
Accordingly in 1574/1627 the line is shortened by one char.
* repaired signed/unsigned issue
* changes for unicode
Here is the warning currently being produced:
CMake Warning (dev) at C:/Program Files/CMake/share/cmake-3.19/Modules/GNUInstallDirs.cmake:223 (message):
Unable to determine default CMAKE_INSTALL_LIBDIR directory because no
target architecture is known. Please enable at least one language before
including GNUInstallDirs.
Call Stack (most recent call first):
I noted how I fixed the error. This is caused by GNUInstallDirs automatically executing code just by including it.
I also added -Werror=dev to the CI to ensure this never happens again.
Co-authored-by: Juan Ramos <juanr0911@gmail.com>
* Cmake Revamp
I needed to do a variety of things to ensure cxxopts worked well in my own project.
I created a new cmake module to abstract a lot of the logic in the main CMakelists.txt, I think it really assists in the readability of the project. Consequently a lot of logic is now written in functions.
I made a lot of the project options off by default unless the project is being built standalone. As a frequent consumer of cmake libraries this is a huge issue. Since examples, tests, installation, etc. aren't things I expect/desired by default when using libraries.
Co-authored-by: Juan Ramos <juanr0911@gmail.com>
Major refactor of the parsing code organisation to improve encapsulation
and not modify the input arguments. The returned result no longer has
pointers into the original option specification.