/** * @file main.cpp * @author jinchao * @brief 主函数 * @version 1.0 * @date 2025-02-14 * * @copyright Copyright (c) 2025 COMAC * */ #include #include #include #include "XNEngine.h" /** * @brief 主函数 * @param argc 参数个数 * @param argv 参数列表 * @return 返回值 */ int main(int argc, char *argv[]) { XNEngine engine; //检测输入参数个数 if (argc <= 2) { std::cerr << "0x1000 输入参数太少!" << std::endl; return -1; } std::string configPath; std::string configId; bool hasConfigPath = false; bool hasConfigId = false; //检查是否包含-f和-id参数 for (int i = 1; i < argc;) { std::string arg = argv[i]; if ("-f" == arg) { if ((i + 1) < argc) { configPath = argv[i + 1]; hasConfigPath = true; i += 2; } else { std::cerr << "0x1001 在-f参数后,未指定配置文件路径,引擎将退出!" << std::endl; return -1; } } else if ("-id" == arg) { if ((i + 1) < argc) { configId = argv[i + 1]; hasConfigId = true; i += 2; } else { std::cerr << "0x1002 在-id参数后,未指定配置ID,引擎将退出!" << std::endl; return -1; } } else if ("-test" == arg) { engine.SetTestMode(true); i++; } else { std::cerr << "0x1003 无法识别的参数 " << arg << " ,引擎将退出!" << std::endl; return -1; } } //检查是否同时包含-f和-id参数 if (hasConfigPath && hasConfigId) { std::cerr << "0x1004 请指定 -f 或 -id ,但不要同时指定!" << std::endl; return -1; } //检测配置文件格式 if (hasConfigPath) { return engine.Run(configPath, 0); } else if (hasConfigId) { return engine.Run(configId, 1); } return -1; }