* Fix Issue #3748 Sorted command line options output * Missing link library failing tests
This commit is contained in:
parent
2a0ee9f2a8
commit
8db9b39bfd
5 changed files with 41 additions and 3 deletions
|
|
@ -90,7 +90,8 @@ target_link_libraries(
|
||||||
ipc_flatbuffers_lib
|
ipc_flatbuffers_lib
|
||||||
${CRYPTOPP_LIBRARY}
|
${CRYPTOPP_LIBRARY}
|
||||||
${CMAKE_DL_LIBS}
|
${CMAKE_DL_LIBS}
|
||||||
Boost::boost)
|
Boost::boost
|
||||||
|
Boost::program_options)
|
||||||
|
|
||||||
if(NANO_STACKTRACE_BACKTRACE)
|
if(NANO_STACKTRACE_BACKTRACE)
|
||||||
target_link_libraries(nano_lib backtrace)
|
target_link_libraries(nano_lib backtrace)
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include <boost/dll/runtime_symbol_info.hpp>
|
#include <boost/dll/runtime_symbol_info.hpp>
|
||||||
#include <boost/filesystem.hpp>
|
#include <boost/filesystem.hpp>
|
||||||
|
#include <boost/program_options.hpp>
|
||||||
|
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
@ -196,3 +197,23 @@ void assert_internal (char const * check_expr, char const * func, char const * f
|
||||||
|
|
||||||
abort ();
|
abort ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Issue #3748
|
||||||
|
void nano::sort_options_description (const boost::program_options::options_description & source, boost::program_options::options_description & target)
|
||||||
|
{
|
||||||
|
// Grab all of the options, get the option display name, stick it in a map using the display name as
|
||||||
|
// the key (the map will sort) and the value as the option itself.
|
||||||
|
const auto & options = source.options ();
|
||||||
|
std::map<std::string, boost::shared_ptr<boost::program_options::option_description>> sorted_options;
|
||||||
|
for (const auto & option : options)
|
||||||
|
{
|
||||||
|
auto pair = std::make_pair (option->canonical_display_name (2), option);
|
||||||
|
sorted_options.insert (pair);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rebuild for display purposes only.
|
||||||
|
for (const auto & option_pair : sorted_options)
|
||||||
|
{
|
||||||
|
target.add (option_pair.second);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,11 @@ namespace system
|
||||||
{
|
{
|
||||||
class error_code;
|
class error_code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace program_options
|
||||||
|
{
|
||||||
|
class options_description;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void assert_internal (char const * check_expr, char const * func, char const * file, unsigned int line, bool is_release_assert, std::string_view error = "");
|
void assert_internal (char const * check_expr, char const * func, char const * file, unsigned int line, bool is_release_assert, std::string_view error = "");
|
||||||
|
|
@ -203,4 +208,7 @@ constexpr TARGET_TYPE narrow_cast (SOURCE_TYPE const & val)
|
||||||
debug_assert (val == static_cast<SOURCE_TYPE> (res));
|
debug_assert (val == static_cast<SOURCE_TYPE> (res));
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Issue #3748
|
||||||
|
void sort_options_description (const boost::program_options::options_description & source, boost::program_options::options_description & target);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2033,7 +2033,11 @@ int main (int argc, char * const * argv)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cout << description << std::endl;
|
// Issue #3748
|
||||||
|
// Regardless how the options were added, output the options in alphabetical order so they are easy to find.
|
||||||
|
boost::program_options::options_description sorted_description ("Command line options");
|
||||||
|
nano::sort_options_description (description, sorted_description);
|
||||||
|
std::cout << sorted_description << std::endl;
|
||||||
result = -1;
|
result = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -156,7 +156,11 @@ int main (int argc, char * const * argv)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cout << description << std::endl;
|
// Issue #3748
|
||||||
|
// Regardless how the options were added, output the options in alphabetical order so they are easy to find.
|
||||||
|
boost::program_options::options_description sorted_description ("Command line options");
|
||||||
|
nano::sort_options_description (description, sorted_description);
|
||||||
|
std::cout << sorted_description << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue