XNSim/XNEngine/main.cpp

81 lines
1.7 KiB
C++
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file main.cpp
* @author jinchao
* @brief 主函数
* @version 1.0
* @date 2025-02-14
*
* @copyright Copyright (c) 2025 COMAC
*
*/
#include <iostream>
#include <string>
#include <cstdlib>
#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 <config_file> 或 -id <config_id> ,但不要同时指定!"
<< std::endl;
return -1;
}
//检测配置文件格式
if (hasConfigPath) {
return engine.Run(configPath, 0);
} else if (hasConfigId) {
return engine.Run(configId, 1);
}
return -1;
}