From ad5354f5d5dacf435bf1f7dcf85e5ee018f3b9ec Mon Sep 17 00:00:00 2001 From: jinchao <383321154@qq.com> Date: Mon, 23 Jun 2025 09:52:58 +0800 Subject: [PATCH] =?UTF-8?q?V0.32.3.250623=5Falpha:=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E7=94=9F=E6=88=90=E5=90=8E=E7=AB=AFC++?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../C909_V1/IDL/ATA04/CMakeLists.txt | 22 ++++++++++++++++++ .../Configuration/C909_V1/IDL/CMakeLists.txt | 21 +++-------------- Release/database/XNSim.db | Bin 1224704 -> 1224704 bytes XNInterfaceGenServer/CMakeListsGen.cpp | 16 ++++++------- XNInterfaceGenServer/DDSInterfaceGen.cpp | 15 +++++++++++- 5 files changed, 47 insertions(+), 27 deletions(-) create mode 100644 Release/Configuration/C909_V1/IDL/ATA04/CMakeLists.txt diff --git a/Release/Configuration/C909_V1/IDL/ATA04/CMakeLists.txt b/Release/Configuration/C909_V1/IDL/ATA04/CMakeLists.txt new file mode 100644 index 0000000..52faa11 --- /dev/null +++ b/Release/Configuration/C909_V1/IDL/ATA04/CMakeLists.txt @@ -0,0 +1,22 @@ +# ATA04接口的源文件 +set(ATA04_SOURCES + Aerodynamics_input.hpp + Aerodynamics_input.cxx + GroundHandling_input.hpp + GroundHandling_input.cxx + GroundHandling_output.hpp + GroundHandling_output.cxx + Aerodynamics_output.hpp + Aerodynamics_output.cxx + WeightBalance_input.hpp + WeightBalance_input.cxx + WeightBalance_output.hpp + WeightBalance_output.cxx + GroundHandling_heartbeat.hpp + GroundHandling_heartbeat.cxx + WeightBalance_heartbeat.hpp + WeightBalance_heartbeat.cxx + Aerodynamics_heartbeat.hpp + Aerodynamics_heartbeat.cxx +) +list(APPEND ALL_SUBDIR_SOURCES ${ATA04_SOURCES}) diff --git a/Release/Configuration/C909_V1/IDL/CMakeLists.txt b/Release/Configuration/C909_V1/IDL/CMakeLists.txt index 5834e3b..cc320fb 100644 --- a/Release/Configuration/C909_V1/IDL/CMakeLists.txt +++ b/Release/Configuration/C909_V1/IDL/CMakeLists.txt @@ -16,6 +16,8 @@ if(NOT fastdds_FOUND) find_package(fastdds 3 REQUIRED) endif() find_package(OpenSSL REQUIRED) +set(ALL_SUBDIR_SOURCES "") +add_subdirectory(ATA04) add_library(C909_V1_Interface SHARED C909_V1.hpp C909_V1CdrAux.hpp @@ -25,24 +27,7 @@ add_library(C909_V1_Interface SHARED C909_V1TypeObjectSupport.hpp C909_V1TypeObjectSupport.cxx C909_V1_Interface.h - ATA04/Aerodynamics_input.hpp - ATA04/Aerodynamics_input.cxx - ATA04/GroundHandling_input.hpp - ATA04/GroundHandling_input.cxx - ATA04/GroundHandling_output.hpp - ATA04/GroundHandling_output.cxx - ATA04/Aerodynamics_output.hpp - ATA04/Aerodynamics_output.cxx - ATA04/WeightBalance_input.hpp - ATA04/WeightBalance_input.cxx - ATA04/WeightBalance_output.hpp - ATA04/WeightBalance_output.cxx - ATA04/GroundHandling_heartbeat.hpp - ATA04/GroundHandling_heartbeat.cxx - ATA04/WeightBalance_heartbeat.hpp - ATA04/WeightBalance_heartbeat.cxx - ATA04/Aerodynamics_heartbeat.hpp - ATA04/Aerodynamics_heartbeat.cxx + ${ALL_SUBDIR_SOURCES} ) target_link_libraries(C909_V1_Interface PRIVATE fastcdr fastdds OpenSSL::SSL OpenSSL::Crypto diff --git a/Release/database/XNSim.db b/Release/database/XNSim.db index 5b2a020afbdbc3176e990c3751ce44aed8d79b8f..7879cd4c63e7c05126fbb030e6afd19bab050ada 100644 GIT binary patch delta 364 zcmZp8;MMTJYl1Z6--$BLjDH&wS`!$zCNM2oFU8HA#lX+aXU#i}=N|WO?tZREY;~-W zET+s^n*{}YnClxof;lA>#brI4xWx_hjE#WEz{phBz)aW3I5DRnBhkRp%GA)x$n?pc z8BcqrJ?mTgw14sQDf6FoOn5q>@A>NW&f3~fcTL76{$$6lXY2c)>{#`D^@0~&P0wew zKvX`P*8XJowx>&cc0Sp$_SyE`PrDX8+12Lko0y&IlUZC+tXEP|0#WmRPtWsp4M3}b z@=tc`MpXhd?`d1>({(!&Q*tx&wwrEYI&aM!%u_j?{R2}!6Hn##X&;y#a&vPrOEN+{ z7u??RhY5(8ftUq|S%H`hh}nUd1Bf|+m_E%` e#GF9P1;pGy%mc(A^?X3g55xl7TmA^vYz6=mV?Hnd diff --git a/XNInterfaceGenServer/CMakeListsGen.cpp b/XNInterfaceGenServer/CMakeListsGen.cpp index 97cac2e..e7f7ebb 100644 --- a/XNInterfaceGenServer/CMakeListsGen.cpp +++ b/XNInterfaceGenServer/CMakeListsGen.cpp @@ -38,6 +38,13 @@ bool CMakeListsGen::generateCMakeLists(const AllInterfaceData &interfaceData, cmakeFile << "find_package(OpenSSL REQUIRED)" << std::endl; + cmakeFile << "set(ALL_SUBDIR_SOURCES \"\")" << std::endl; + + for (const auto &ataInterfaceData : interfaceData.ataInterfaceData) { + std::string ataName = ataInterfaceData.ataName; + cmakeFile << "add_subdirectory(" << ataName << ")" << std::endl; + } + cmakeFile << "add_library(" << configName << "_Interface SHARED" << std::endl; cmakeFile << " " << configName << ".hpp" << std::endl; cmakeFile << " " << configName << "CdrAux.hpp" << std::endl; @@ -47,14 +54,7 @@ bool CMakeListsGen::generateCMakeLists(const AllInterfaceData &interfaceData, cmakeFile << " " << configName << "TypeObjectSupport.hpp" << std::endl; cmakeFile << " " << configName << "TypeObjectSupport.cxx" << std::endl; cmakeFile << " " << configName << "_Interface.h" << std::endl; - for (const auto &ataInterfaceData : interfaceData.ataInterfaceData) { - std::string ataName = ataInterfaceData.ataName; - for (const auto &structInterfaceData : ataInterfaceData.structInterfaceData) { - std::string structName = structInterfaceData.modelStructName; - cmakeFile << " " << ataName << "/" << structName << ".hpp" << std::endl; - cmakeFile << " " << ataName << "/" << structName << ".cxx" << std::endl; - } - } + cmakeFile << " ${ALL_SUBDIR_SOURCES}" << std::endl; cmakeFile << ")" << std::endl; cmakeFile << "target_link_libraries(" << configName << "_Interface PRIVATE" << std::endl; diff --git a/XNInterfaceGenServer/DDSInterfaceGen.cpp b/XNInterfaceGenServer/DDSInterfaceGen.cpp index 8abc369..373cab8 100644 --- a/XNInterfaceGenServer/DDSInterfaceGen.cpp +++ b/XNInterfaceGenServer/DDSInterfaceGen.cpp @@ -10,7 +10,7 @@ bool DDSInterfaceGen::generateDDSInterface(const AllInterfaceData &interfaceData { std::string systemName = interfaceData.systemName; std::string planeName = interfaceData.planeName; - + // 生成包含所有接口的头文件 std::string headerFilePath = IDLPath + "/" + IDLName + "_Interface.h"; std::ofstream headerFile(headerFilePath); headerFile << "#pragma once" << std::endl; @@ -19,6 +19,11 @@ bool DDSInterfaceGen::generateDDSInterface(const AllInterfaceData &interfaceData std::string interfaceFolderPath = IDLPath + "/" + ataName; fs::create_directories(interfaceFolderPath); std::string nameSpace = systemName + "::" + planeName + "::" + ataName; + // 生成每个ATA章节子文件夹的CMakeLists.txt文件 + std::ofstream cmakeListsPath(interfaceFolderPath + "/CMakeLists.txt"); + cmakeListsPath << "# " << ataName << "接口的源文件" << std::endl; + cmakeListsPath << "set(" << ataName << "_SOURCES " << std::endl; + for (const auto &structData : ata.structInterfaceData) { std::string structName = structData.modelStructName; generateDDSInterfaceHpp(nameSpace, structName, interfaceFolderPath, @@ -26,7 +31,15 @@ bool DDSInterfaceGen::generateDDSInterface(const AllInterfaceData &interfaceData generateDDSInterfaceCxx(nameSpace, structName, interfaceFolderPath, structData.interfaceData); headerFile << "#include \"" << ataName << "/" << structName << ".hpp\"" << std::endl; + + cmakeListsPath << " " << structName << ".hpp" << std::endl; + cmakeListsPath << " " << structName << ".cxx" << std::endl; } + cmakeListsPath << ")" << std::endl; + // 将ATA04的源文件添加到父目录的ALL_SUBDIR_SOURCES变量中 + cmakeListsPath << "list(APPEND ALL_SUBDIR_SOURCES ${" << ataName << "_SOURCES})" + << std::endl; + cmakeListsPath.close(); } headerFile.close(); return true;