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