67 lines
1.5 KiB
C
67 lines
1.5 KiB
C
|
/**
|
|||
|
* @file PluginGenerator.h
|
|||
|
* @brief 简化的插件生成器 - 从数据库生成插件cpp文件和CMakeLists
|
|||
|
*/
|
|||
|
|
|||
|
#pragma once
|
|||
|
#include "TypeDefine.h"
|
|||
|
|
|||
|
// 接口信息结构
|
|||
|
struct InterfaceInfo {
|
|||
|
std::string interfaceName; // 接口名称(如:Aerodynamics_heartbeat)
|
|||
|
std::string
|
|||
|
templateType; // 模板类型(如:XNSim::C909::ATA04::Aerodynamics_heartbeat_Interface)
|
|||
|
};
|
|||
|
|
|||
|
// 插件信息
|
|||
|
struct GenPluginInfo {
|
|||
|
std::string pluginName; // 插件名称(如:C909_V1)
|
|||
|
std::string pluginDescription; // 插件描述
|
|||
|
std::string interfaceHeaderPath; // 接口头文件路径(如:IDL/C909_V1_Interface.h)
|
|||
|
std::vector<InterfaceInfo> interfaces; // 接口列表
|
|||
|
std::string outputDirectory; // 输出目录
|
|||
|
};
|
|||
|
|
|||
|
class PluginGenerator
|
|||
|
{
|
|||
|
public:
|
|||
|
PluginGenerator();
|
|||
|
~PluginGenerator();
|
|||
|
|
|||
|
// 从数据库加载插件信息
|
|||
|
bool loadPluginFromDatabase(const int confID);
|
|||
|
|
|||
|
// 生成插件cpp文件
|
|||
|
bool generatePluginCpp();
|
|||
|
|
|||
|
// 生成CMakeLists.txt
|
|||
|
bool generateCMakeLists();
|
|||
|
|
|||
|
// 编译插件
|
|||
|
bool compilePlugin();
|
|||
|
|
|||
|
// 获取错误信息
|
|||
|
std::string getLastError() const;
|
|||
|
|
|||
|
// 获取插件信息
|
|||
|
const GenPluginInfo &getPluginInfo() const;
|
|||
|
|
|||
|
private:
|
|||
|
// 生成插件cpp文件内容
|
|||
|
std::string generatePluginCppContent();
|
|||
|
|
|||
|
// 生成CMakeLists.txt内容
|
|||
|
std::string generateCMakeListsContent();
|
|||
|
|
|||
|
// 写入文件
|
|||
|
bool writeFile(const std::string &filePath, const std::string &content);
|
|||
|
|
|||
|
// 创建目录
|
|||
|
bool createDirectory(const std::string &dirPath);
|
|||
|
|
|||
|
private:
|
|||
|
std::string m_lastError;
|
|||
|
|
|||
|
GenPluginInfo m_pluginInfo;
|
|||
|
};
|