mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	Implement new argument parsing using getopt and add the corresponding library to externals
This commit is contained in:
		
							parent
							
								
									f4e1d8ea36
								
							
						
					
					
						commit
						9930ef72dd
					
				
					 6 changed files with 1156 additions and 3 deletions
				
			
		|  | @ -16,8 +16,11 @@ create_directory_groups(${SRCS} ${HEADERS}) | |||
| add_executable(citra ${SRCS} ${HEADERS}) | ||||
| target_link_libraries(citra core common video_core) | ||||
| target_link_libraries(citra ${GLFW_LIBRARIES} ${OPENGL_gl_LIBRARY} inih) | ||||
| if (MSVC) | ||||
|     target_link_libraries(citra getopt) | ||||
| endif() | ||||
| target_link_libraries(citra ${PLATFORM_LIBRARIES}) | ||||
| 
 | ||||
| if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|FreeBSD|OpenBSD|NetBSD") | ||||
|     install(TARGETS citra RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin") | ||||
| endif() | ||||
| endif() | ||||
|  | @ -3,6 +3,15 @@ | |||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include <string> | ||||
| #include <thread> | ||||
| #include <iostream> | ||||
| 
 | ||||
| #ifdef _MSC_VER | ||||
| #include <getopt.h> | ||||
| #else | ||||
| #include <unistd.h> | ||||
| #include <getopt.h> | ||||
| #endif | ||||
| 
 | ||||
| #include "common/logging/log.h" | ||||
| #include "common/logging/backend.h" | ||||
|  | @ -18,12 +27,39 @@ | |||
| 
 | ||||
| #include "video_core/video_core.h" | ||||
| 
 | ||||
| 
 | ||||
| static void PrintHelp() | ||||
| { | ||||
|     std::cout << "Usage: citra <filename>" << std::endl; | ||||
| } | ||||
| 
 | ||||
| /// Application entry point
 | ||||
| int main(int argc, char **argv) { | ||||
|     int option_index = 0; | ||||
|     std::string boot_filename; | ||||
|     static struct option long_options[] = { | ||||
|         { "help", no_argument, 0, 'h' }, | ||||
|         { 0, 0, 0, 0 } | ||||
|     }; | ||||
| 
 | ||||
|     while (optind < argc) { | ||||
|         char arg = getopt_long(argc, argv, ":h", long_options, &option_index); | ||||
|         if (arg != -1) { | ||||
|             switch (arg) { | ||||
|             case 'h': | ||||
|                 PrintHelp(); | ||||
|                 return 0; | ||||
|             } | ||||
|         } else { | ||||
|             boot_filename = argv[optind]; | ||||
|             optind++; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     Log::Filter log_filter(Log::Level::Debug); | ||||
|     Log::SetFilter(&log_filter); | ||||
| 
 | ||||
|     if (argc < 2) { | ||||
|     if (boot_filename.empty()) { | ||||
|         LOG_CRITICAL(Frontend, "Failed to load ROM: No ROM specified"); | ||||
|         return -1; | ||||
|     } | ||||
|  | @ -31,7 +67,7 @@ int main(int argc, char **argv) { | |||
|     Config config; | ||||
|     log_filter.ParseFilterString(Settings::values.log_filter); | ||||
| 
 | ||||
|     std::string boot_filename = argv[1]; | ||||
| 
 | ||||
|     EmuWindow_GLFW* emu_window = new EmuWindow_GLFW; | ||||
| 
 | ||||
|     VideoCore::g_hw_renderer_enabled = Settings::values.use_hw_renderer; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue