C + + software dependency management and automatic construction tool

By providing a project management tool suitable for C++, it solves the installation and compatibility issues of C++ project management tools in cross-operating system environments, realizes project dependency management and module dependency management, and improves the development efficiency of C++ software projects.

CN119938124AActive Publication Date: 2025-05-06CSSC SYST ENG RES INST

Patent Information

Application Number
CN202411966979.8
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-12-30
Publication Date
2025-05-06
Estimated Expiration
2044-12-30

AI Technical Summary

Technical Problem

Existing C++ project management tools cannot be installed quickly in cross-operating system environments, and are not compatible with QMake and CMake projects, and lack module dependency management functions.

Method used

It provides a C++ software dependency management and automatic construction tool, including centralized software release warehouse, framework project management tools and project directory structure, supports cross-operating system use, rapid installation, and is compatible with QMake and CMake projects, and introduces module dependency management functions.

Benefits of technology

It has realized project dependency management, life cycle management, version management, standardized release and import, and module dependency management, filling the gap in the lack of standardized project management tools in the C++ language, and improving the development efficiency of C++ software projects.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119938124A_ABST
    Figure CN119938124A_ABST
Patent Text Reader

Abstract

The invention relates to the technical field of computer software auxiliary development tools, and provides a C + + software dependency management and automatic construction tool, which comprises a centralized software release warehouse, a matched framework project management tool, a project directory structure and a module configuration standard, and is used for filling the blank that a C + + language does not form a standardized project management tool. The tool provides the functions of project dependency management, life cycle management, version management, standardized release and import and the like. Besides, compared with an existing scheme in the market, the tool introduces a module dependency management function and is downwards compatible with QMake and CMake projects at the same time, development of C + + software projects can be better supported, a centralized warehouse is provided to manage dependency, project dependency is automatically downloaded, version conflicts are solved, and the development efficiency of the C + + software projects is improved. Life cycles of dependent downloading, dependent installation, project configuration generation, project compiling, project packaging and publishing and the like can be defined, so that the development and publishing process is more standard and ordered.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to the technical field of computer software-aided development tools, and in particular to a C++ software dependency management and automatic construction tool. Background Art

[0002] At present, emerging programming languages ​​have solved many pain points in the project development process with their powerful supporting project management tools. Representative products include Java / Maven, Python / Pip, Rust / Cargo, etc. These products all provide functions such as module dependency management and consistency checking, project development lifecycle management, standardized publishing and importing methods, and standardized project directory structure. These functions greatly simplify the work content of developers, standardize the workflow, reduce the probability of human errors, and provide favorable support for rapid reuse between modules.

[0003] At the same time, as an early language, C++ lacks standard project management tools. The mainstream project management tools on the market include Vcpkg, CPM, Conan, etc. Among them, Vcpkg only supports Windows operating system and cannot meet the needs of project management in a localized environment; CPM is based on CMake and cannot support QMake projects; Conan is based on Python3, which makes its installation steps cumbersome in an offline environment. In addition, the above tools mainly control project-level dependencies and do not provide explicit solutions for dependencies between modules.

[0004] To address the above issues, a project management tool is needed that can be used across operating systems, quickly installed, compatible with QMake and CMake projects, and provides project dependency management and module dependency management. Summary of the invention

[0005] The purpose of the present invention is to provide a C++ software dependency management and automatic construction tool to solve the problems raised in the above background technology.

[0006] To achieve the above-mentioned purpose, the present invention provides the following technical solutions: a C++ software dependency management and automatic construction tool, including a centralized software release warehouse and supporting framework project management tools and project directory structure and module configuration standards, providing favorable support for the entire life cycle of project implementation.

[0007] Preferably, the centralized software release warehouse is divided into two parts: upstream and downstream. Figure 1As shown, the upstream is a seller, who needs to stock his goods in the storage center. Mapping to the project is to publish the reusable project to the software source; when the downstream buyer selects satisfactory goods on the e-commerce platform, he can place an order on the e-commerce platform. The e-commerce platform sends the buyer's needs to the storage center, and the goods will be sent from the storage center to the buyer. The comparison project is pulled from the software source to the current project. The above process avoids direct contact between sellers and buyers, decouples the reusable project from the current project, and creates conditions for the current project to independently select the version of the reusable project and do a good job of version control.

[0008] Preferably, the framework project management tool fpm is developed using Qt and is compatible with different operating systems. The fpm tool is packaged and released using rpm under Redhat / Debian operating systems, packaged and released using dpkg under Debian / Ubuntu operating systems, and released using 7z compressed packages under Wi ndows. All software packages contain all the environments required for the tool to run, which can support the rapid installation of the tool. fpm can use the command fpm 3rd install to install project dependencies, and the command fpm gen[qmake|cmake] is used to calculate the inter-module dependency summary and generate a QMake or CMake project.

[0009] Preferably, the directory structure standard includes directory structures such as the tripartite dependency directory, the intermediate file directory, the release directory, the document directory, the module directory, the module content directory, and the project skeleton directory. The consistency of the upstream and downstream project directories is constrained, and the import and export problems of reusable projects are solved by defining the import and export directories.

[0010] Preferably, the module configuration includes project modules, group modules, static library modules, dynamic library modules, interface modules, executable modules, test modules and plug-in modules. The module configuration file can configure dependencies on external projects and dependencies on current projects or external project modules. This method can clearly display the impact domains of different modules and support management module reuse.

[0011] Compared with the prior art, the present invention has the following beneficial effects:

[0012] The present invention proposes a project management tool suitable for C++ language. It is used to fill the gap that C++ language has not formed a standardized project management tool. The tool provides functions such as project dependency management, life cycle management, version management, standardized release and import. In addition, compared with existing solutions on the market, the tool introduces a module dependency management function, and is backward compatible with QMake and CMake projects, which can better support the development of C++ software projects.

[0013] Project dependency management: Provides a centralized repository to manage dependencies, automatically download project dependencies and resolve version conflicts.

[0014] Lifecycle management: defines the lifecycles of dependency download, dependency installation, project configuration generation, project compilation, project packaging and release, etc. This makes the development and release process more standardized and orderly.

[0015] Version management: The central repository can store different versions of the same component, allowing end users to choose the version to use independently, decoupling component development from project development progress.

[0016] Standardized publishing and importing: Defines unified publishing and importing modes, effectively reducing the communication costs between project developers and component developers.

[0017] Module dependency management: Make modules the basic elements of the project, and use the method of configuring module dependencies instead of configuring the imported header files, connected library files, and macro definitions that need to be configured. This method will automatically calculate the module dependency summary (see the appendix for detailed explanation), and developers will no longer need to accurately understand the dependency relationship of the dependent modules. This method is conducive to reducing configuration content, reducing learning costs, and improving work efficiency.

[0018] Project compatibility: The present invention can convert the defined project configuration into a QMake or CMake project. Different integrated development environments on the market support different project types. This method can enable the project to run smoothly in mainstream C++ integrated development environments such as Visual Studio, QtCreator, and CLIon. BRIEF DESCRIPTION OF THE DRAWINGS

[0019] Figure 1 This is a schematic diagram of the centralized software warehouse of the present invention;

[0020] Figure 2 This is a command flow structure diagram of the tool of the present invention;

[0021] Figure 3 The present invention is specifically used in the flow chart;

[0022] Figure 4 This is a schematic diagram of the module configuration file structure of the present invention;

[0023] Figure 5 It is a module schematic diagram of the engineering project of the present invention;

[0024] Figure 6 A schematic diagram of dependency relationship and dependency summary of the present invention;

[0025] Figure 7 This is a schematic diagram of the directory structure specification of the present invention. DETAILED DESCRIPTION

[0026] In order to make the technical means, creative features, objectives and effects achieved by the present invention easy to understand, the present invention is further explained below in conjunction with specific implementation methods.

[0027] In the description of the present invention, it should be noted that the terms "upper", "lower", "inner", "outer", "front end", "rear end", "two ends", "one end", "the other end" and the like indicate positions or positional relationships based on the positions or positional relationships shown in the drawings, and are only for the convenience of describing the present invention and simplifying the description, and do not indicate or imply that the device or element referred to must have a specific orientation, be constructed and operated in a specific orientation, and therefore cannot be understood as limiting the present invention. In addition, the terms "first" and "second" are used for descriptive purposes only and cannot be understood as indicating or implying relative importance.

[0028] In the description of the present invention, it should be noted that, unless otherwise clearly specified and limited, the terms "installed", "provided with", "connected", etc. should be understood in a broad sense. For example, "connected" can be a fixed connection, a detachable connection, or an integral connection; it can be a mechanical connection or an electrical connection; it can be a direct connection, or it can be indirectly connected through an intermediate medium, or it can be the internal communication of two components. For ordinary technicians in this field, the specific meanings of the above terms in the present invention can be understood according to specific circumstances.

[0029] The following will be combined with the drawings in the embodiments of the present invention to clearly and completely describe the technical solutions in the embodiments of the present invention. Obviously, the described embodiments are only part of the embodiments of the present invention, not all of the embodiments. Based on the embodiments of the present invention, all other embodiments obtained by ordinary technicians in this field without creative work are within the scope of protection of the present invention.

[0030] The specific implementation method includes three basic stages: project establishment, project development, and project release. For detailed operations, see Figure 3

[0031] Project establishment stage: prepare a module.json file, which contains information such as the version number of the current project, dependencies on other projects, project resource file directory, sub-modules included in the project, and the address of the version repository.

[0032] Project development phase:

[0033] A: Use the present invention to download dependencies. The present invention will automatically calculate the dependency tree, solve dependency conflicts, and inject dependencies into the current project.

[0034] 1. Dependency tree generation: The present invention will recursively search for project dependencies until the dependent project no longer depends on other projects. The search process will generate a dependency tree, which represents the real project dependencies of the project.

[0035] 2. Dependency conflict resolution: When the same project appears twice in the dependency tree, the dependency conflict resolution mechanism needs to intervene. For versions a1.b1.c1 and a2.b2.c2, the mechanism only allows c1 and c2 of the two dependencies to be different. The conflict resolution mechanism will automatically select the higher c version as the solution. When a1 is different from a2 or b1 is different from b2, the conflict resolution mechanism will determine that it cannot be automatically resolved and issue a prompt for manual modification.

[0036] 3. Dependency injection: decompress all project dependency packages obtained from the server and place them in the current project. You can then configure module dependencies to inject dependencies into the modules contained in the project.

[0037] B: Generate traditional project files. The present invention supports generating QMake projects or CMake projects. This step is used to support the compilation process of the project.

[0038] C: Compile, run, test, and perform other operations on the project.

[0039] Project release phase: The present invention performs operations such as project export and project packaging, and submits the packaged related files to the version warehouse to complete the project release operation. The released project can be introduced again when configuring dependencies in the project establishment phase.

[0040] The above describes the specific operation and main features of the present invention. Based on the XML Schems scenario markup language, the scenario description information of the shipboard aviation support is improved and enriched, the content and rule system of the aviation support scenario are clearly expressed, and it can be supplemented and expanded according to specific needs; a task parser is set to parse the input scheduling task plan into an XML document and store it in the task scenario element; for the complex marine shipboard environment, different physical equipment, environmental conditions, support conditions, etc. are generated by assumption, and a variety of shipboard aviation support task scheduling plans are input for simulation assumption deduction and evaluation, providing a comprehensive, standard, and real-life simulation deduction environment scenario generation for the evaluation of shipboard aviation support task scheduling plans, making the training tasks in the marine shipboard environment more standardized and hierarchical, making the training more orderly and more practical, reducing the cost required for actual training, and comprehensively improving the efficiency of aviation support.

[0041] The above is only an embodiment of the present invention, and the common sense such as the known specific structure and characteristics in the scheme is not described in detail here. For those skilled in the art, it is obvious that the present invention is not limited to the details of the above exemplary embodiments, and the present invention can be implemented in other specific forms without departing from the spirit or basic characteristics of the present invention. Therefore, no matter from which point of view, the embodiments should be regarded as exemplary and non-restrictive, and the scope of the present invention is defined by the attached claims rather than the above description, so it is intended to include all changes within the meaning and scope of the equivalent elements of the claims. Any figure mark in the claims should not be regarded as limiting the claims involved.

Claims

1. A C++ software dependency management and automatic build tool, characterized by , including a centralized software release repository and supporting framework project management tools, project directory structure and module configuration standards.

2. A C++ software dependency management and automatic construction tool according to claim 1, characterized in that: The centralized software release warehouse is divided into two parts, upstream and downstream, which creates conditions for the current project to independently select the version of the reusable project and do a good job of version control.

3. A C++ software dependency management and automatic construction tool according to claim 1, characterized in that: The framework project management tool fpm is developed using Qt and is compatible with different operating systems. The fpm tool is packaged and released using rpm under Redhat / Debian operating systems, packaged and released using dpkg under Debian / Ubuntu operating systems, and released using 7z compressed packages under Windows. All software packages contain all the environments required for the tool to run, which can support the rapid installation of the tool. fpm can use the command fpm 3rd install to install project dependencies, and use the command fpm gen[qmake|cmake] to calculate the dependency summary between modules and generate QMake or CMake projects.

4. A C++ software dependency management and automatic construction tool according to claim 1, characterized in that: The directory structure includes three-party dependency directories, intermediate build file directories, release directories, document directories, module directories, module content directories, project skeleton directories, etc. It constrains the consistency of upstream and downstream project directories and solves the import and export problems of reusable projects by defining import and export directories.

5. A C++ software dependency management and automatic construction tool according to claim 1, characterized in that: The module configuration includes project modules, group modules, static library modules, dynamic library modules, interface modules, executable modules, test modules and plug-in modules. The module configuration file can configure dependencies on external projects and dependencies on current project or external project modules. This method can clearly display the impact domains of different modules and support management module reuse.

Citation Information

Patent Citations

  • Linux software package manufacturing method capable of being used in various systems

    CN103440156A

  • Method simultaneously supporting two software package managers and supporting software package interdependence and conflict detection

    CN112230976A

  • Method for switching RPM packet management tool into DPKG packet management tool in Redhat series release edition

    CN112286531A

  • C language code library management method and system

    CN115509595A

  • Method for managing C + + software module based on time point

    CN118733098A

Cited By

  • Unified dependency management method and system based on C + + SDK (Software Development Kit)

    CN121858153A