mirror of
				https://github.com/TheLartians/ModernCppStarter.git
				synced 2025-10-31 18:21:35 +01:00 
			
		
		
		
	* add build time dependency to static lib the header only fmt lib is used to show this * use add_test() and add a warning why doctest_discover_tests() is only availabe if doctest is not imported with find_packag() * cmake-format file * fix missed comment * back to version 1.0 respect most review comments * fix typo * update used CMP package versions * respect most review comments no default cxx language settings install fmt link against fmt::fmt export dependency too if not needed ... * use generic expression as recommended * Update CMakeLists.txt Co-authored-by: Lars Melchior <TheLartians@users.noreply.github.com> * changes acording review comments update to current PackageProject version 1.5.0 too * Update CMakeLists.txt Co-authored-by: Lars Melchior <TheLartians@users.noreply.github.com> * respect review comment remove NOLINT comment * back to begining needs to use doctest cmake modules ... it is not my idea! Co-authored-by: Lars Melchior <TheLartians@users.noreply.github.com>
		
			
				
	
	
		
			53 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include <greeter/greeter.h>
 | |
| #include <greeter/version.h>
 | |
| 
 | |
| #include <cxxopts.hpp>
 | |
| #include <iostream>
 | |
| #include <string>
 | |
| #include <unordered_map>
 | |
| 
 | |
| auto main(int argc, char** argv) -> int {
 | |
|   const std::unordered_map<std::string, greeter::LanguageCode> languages{
 | |
|       {"en", greeter::LanguageCode::EN},
 | |
|       {"de", greeter::LanguageCode::DE},
 | |
|       {"es", greeter::LanguageCode::ES},
 | |
|       {"fr", greeter::LanguageCode::FR},
 | |
|   };
 | |
| 
 | |
|   cxxopts::Options options(*argv, "A program to welcome the world!");
 | |
| 
 | |
|   std::string language;
 | |
|   std::string name;
 | |
| 
 | |
|   // clang-format off
 | |
|   options.add_options()
 | |
|     ("h,help", "Show help")
 | |
|     ("v,version", "Print the current version number")
 | |
|     ("n,name", "Name to greet", cxxopts::value(name)->default_value("World"))
 | |
|     ("l,lang", "Language code to use", cxxopts::value(language)->default_value("en"))
 | |
|   ;
 | |
|   // clang-format on
 | |
| 
 | |
|   auto result = options.parse(argc, argv);
 | |
| 
 | |
|   if (result["help"].as<bool>()) {
 | |
|     std::cout << options.help() << std::endl;
 | |
|     return 0;
 | |
|   }
 | |
| 
 | |
|   if (result["version"].as<bool>()) {
 | |
|     std::cout << "Greeter, version " << GREETER_VERSION << std::endl;
 | |
|     return 0;
 | |
|   }
 | |
| 
 | |
|   auto langIt = languages.find(language);
 | |
|   if (langIt == languages.end()) {
 | |
|     std::cerr << "unknown language code: " << language << std::endl;
 | |
|     return 1;
 | |
|   }
 | |
| 
 | |
|   greeter::Greeter greeter(name);
 | |
|   std::cout << greeter.greet(langIt->second) << std::endl;
 | |
| 
 | |
|   return 0;
 | |
| }
 |