A C++ software dependency management and automatic build tool

By providing C++ software dependency management and automatic build tools, the problem of the lack of standard project management tools for the C++ language is solved, cross-operating system installation compatibility and module dependency management are achieved, and development efficiency and tool functionality are improved.

CN119938124BActive Publication Date: 2026-02-13CSSC SYST ENG RES INST
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202411966979.8
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2024-12-30
Publication Date
2026-02-13
Estimated Expiration
2044-12-30

AI Technical Summary

Technical Problem

The C++ language lacks standard project management tools. Existing tools cannot be used across operating systems, are complex to install, are incompatible with QMake and CMake projects, and lack module dependency management functionality.

Method used

This tool provides a C++ software dependency management and automatic build system, including a centralized software release repository, framework project management tools, and project directory structure. It supports cross-operating system integration, rapid installation, and is compatible with QMake and CMake projects, enabling project and module dependency management.

Benefits of technology

It enables cross-operating system project management, simplifies the installation process, supports QMake and CMake projects, and provides project dependency management, lifecycle management, version management, and module dependency management, reducing development costs and learning difficulty, and improving development efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119938124B_ABST
    Figure CN119938124B_ABST
Patent Text Reader

Abstract

The application relates to the technical field of computer software aided development tools, and provides a C++ software dependency management and automatic construction tool, which comprises a centralized software release warehouse and a matched framework project management tool and engineering directory structure and module configuration standards, so as to fill the blank of the absence of standardized project management tools for the C++ language. The tool provides functions such as project dependency management, life cycle management, version management, standardized release and import. In addition, compared with existing market solutions, the tool introduces a module dependency management function, is downward compatible with QMake and CMake projects, can better support the development of C++ software projects, and provides a centralized warehouse to manage dependency relationships, automatically downloads project dependencies and solves version conflicts, can define a life cycle such as dependency download, dependency installation, project configuration generation, project compilation and project packaging and release, and makes the development and release process more standardized and orderly.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The present application relates to the technical field of computer software assisted development tools, in particular to a C++ software dependency management and automatic construction tool. BACKGROUND

[0002] At present, emerging programming languages have solved many pain points in the project development process with their powerful project management tools, and the representative products are Java / Maven, Python / Pip, Rust / Cargo, etc. These products provide functions such as module dependency management and consistency check, project development life cycle management, standardized release and import method, and standardized engineering directory structure. These functions greatly simplify the work content of developers, standardize the workflow, reduce the probability of human error, and provide favorable support for rapid reuse between modules.

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

[0004] In view of the above problems, a project management tool is needed that can be used across operating systems, quickly installed, compatible with QMake and CMake projects, and provide project dependency management and module dependency management. SUMMARY

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

[0006] To achieve the above purpose, the present application provides the following technical solution: a C++ software dependency management and automatic construction tool, including a centralized software release repository, a supporting framework project management tool, and an engineering directory structure and module configuration standard, which provides favorable support for the whole life cycle of project implementation.

[0007] Preferably, the centralized software release repository is divided into upstream and downstream parts, such as Figure 1As shown, an upstream is a seller, and the seller needs to prepare goods to the warehouse center, which is mapped to the reusable project publishing to the software source; when the downstream buyer selects the satisfied goods on the e-commerce platform, the buyer can place an order on the e-commerce platform, and the e-commerce platform sends the buyer's demand to the warehouse center, and the goods will be sent to the buyer from the warehouse center, and the comparison project is pulled from the software source to the current project. The above process avoids direct contact between the seller and the buyer, decouples the reusable project and the current project, enables the current project to independently select the version of the reusable project, and creates conditions for version control.

[0008] Preferably, the framework project management tool fpm is developed using Qt, and can be compatible with different operating systems, the fpm tool is packaged and published using rpm under the Redhat / Debian operating system, is packaged and published using dpkg under the Debian / Ubuntu operating system, and is published using a 7z compressed package under Windows, all software packages contain all environments required for the tool to run, and can support rapid installation of the tool, the fpm can be installed by using the command fpm 3rd install, and the dependence between modules is calculated and summarized by using the command fpm gen [qmake|cmake] to generate QMake or CMake projects.

[0009] Preferably, the directory structure standard comprises a three-party dependence directory, a build intermediate file directory, a release directory, a document directory, a module directory, a module content directory and a project skeleton directory, and constrains the consistency of upstream and downstream project directories, and solves the export and import problems of the reusable project by defining import and export directories.

[0010] Preferably, the module configuration comprises a project module, a group module, a static library module, a dynamic library module, an interface module, an executable module, a test module and a plug-in module, the module configuration file can be configured with dependence on external projects and dependence on current project or external project modules, and this mode can clearly show the influence domain of different modules and support management of module reuse.

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

[0012] The present application provides a project management tool suitable for C++ language, to fill the blank of no standardized project management tool for C++ language. The tool provides project dependence management, life cycle management, version management, standardized publishing and importing and other functions. In addition, compared with the existing market solutions, the tool introduces module dependence management function, and is downward compatible with QMake and CMake projects, and can better support the development of C++ software projects.

[0013] Project dependency management: provides a centralized warehouse to manage dependencies, automatically downloads project dependencies and resolves version conflicts.

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

[0015] Version management: the central warehouse can store different version information of the same component, and the end user can choose the version to use, decoupling the component development and project development progress.

[0016] Standardized release and import: defines a unified release mode and import mode, effectively reducing the communication cost between project developers and component developers.

[0017] Module dependency management: makes modules the basic elements in the project, and uses the configuration module dependency method instead of configuring the included header files, linked library files and macro definitions that need to be configured. This method automatically calculates the module dependency summary (see Appendix for detailed explanation), and developers no longer need to accurately understand the dependency relationship of the dependent modules. This method helps to reduce configuration content, reduce learning cost, and improve work efficiency.

[0018] Engineering compatibility: the 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 make the project run smoothly in mainstream C++ integrated development environments such as Visual Studio, Qt Creator, and CLion. BRIEF DESCRIPTION OF DRAWINGS

[0019] Figure 1 The invention is a centralized software warehouse schematic diagram;

[0020] Figure 2 The invention is a tool command flow structure diagram;

[0021] Figure 3 The invention is a specific use flowchart;

[0022] Figure 4 The invention is a module configuration file structure schematic diagram;

[0023] Figure 5 The invention is a module schematic diagram of the project;

[0024] Figure 6 The invention is a dependency relationship and dependency summary schematic diagram;

[0025] Figure 7 The invention is a directory structure specification schematic diagram. DETAILED DESCRIPTION

[0026] In order to make the technical means, creative features, purposes and effects of the present application easy to understand, the following will further describe the present application in combination with specific embodiments.

[0027] In the description of the present application, 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 the orientation or positional relationship shown in the drawings, and are only for the convenience of describing the present application and simplifying the description, and do not indicate or imply that the devices or elements referred to must have a particular orientation, be constructed and operated in a particular orientation, and therefore cannot be understood as a limitation on the present application. In addition, the terms "first" and "second" are only for the purpose of description and cannot be understood as indicating or implying relative importance.

[0028] In the description of the present application, it should be noted that unless otherwise explicitly specified and limited, the terms "mounting", "provided with", "connection" and the like should be understood broadly, for example, "connection" can be fixed connection, can also be detachable connection, or integral connection; can be mechanical connection, can also be electrical connection; can be directly connected, can also be indirectly connected through an intermediate medium, can be the communication inside two elements. For those skilled in the art, the specific meaning of the above terms in the present application can be understood according to the specific circumstances.

[0029] The technical solutions in the embodiments of the present application will be described clearly and completely in combination with the drawings in the embodiments of the present application. Obviously, the described embodiments are only part of the embodiments of the present application, not all the embodiments. Based on the embodiments in the present application, all other embodiments obtained by those skilled in the art without creative labor are within the scope of protection of the present application.

[0030] The specific implementation includes three basic stages: project establishment, project development, project release, and detailed operations can be seen in Figure 3

[0031] Project establishment stage: prepare a module.json file, which contains the version number of the current project, the dependency relationship with other projects, the project resource file directory, the sub-modules contained by the project, and the address of the version repository and other information.

[0032] Project development stage:

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

[0034] 1. Dependency tree generation: The application recursively finds the project dependencies until the dependent projects no longer depend on other projects, and the finding process generates a dependency tree that represents the real project dependency relationship of the project.

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

[0036] 3. Dependency injection: All project dependency packages obtained from the server are decompressed and placed in the current project. Subsequently, the module dependency relationship can be configured to inject the modules contained in the project.

[0037] B: Generate traditional engineering files, and the application supports generating QMake projects or CMake projects, which are used to support the compilation process of the project.

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

[0039] Project release phase: The application performs project export and project packaging operations, and submits the packaged files to the version repository, thereby completing the project release operation. The released project can be introduced again when configuring the dependency relationship in the project establishment phase.

[0040] The above describes the specific operation and main features of the application, which based on XML Schems, perfects and enriches the scenario description information of shipboard aviation support, clearly expresses the content and rule system of the aviation support scenario, and can be supplemented and extended according to specific needs; the task parser is set to parse the input scheduling task scheme into an XML document and store it in the task scenario element; for complex sea surface environment, different entity equipment, environmental conditions, support conditions, etc. are generated, and multiple shipboard aviation support task scheduling schemes are input for simulation scenario deduction and evaluation, providing a comprehensive, standard, and real environment close simulation deduction environment scenario generation for shipboard aviation support task scheduling scheme evaluation, making the training task in the sea surface environment more standardized and hierarchical, making the training more orderly, more realistic, reducing the cost of actual training, and improving the efficiency of aviation support.

[0041] The above description is merely that of the embodiments of the present application, and the common knowledge and characteristics in the art are not described in detail. It is obvious for those skilled in the art that the present application is not limited to the details of the above exemplary embodiments, and the present application can be implemented in other specific forms without departing from the spirit or essential characteristics of the present application. Therefore, the embodiments should be considered in all aspects as exemplary and non-limiting, and the scope of the present application is defined by the appended claims rather than the above description, and all changes falling within the meaning and range of the equivalent elements of the claims are intended to be encompassed by the present application. Any reference signs in the claims should not be considered as limiting the involved claims.

Claims

1. A C++ software dependency management and automatic build tool, characterized in that It includes a centralized software release warehouse and a supporting framework project management tool and engineering directory structure and module configuration standards. The framework project management tool fpm is developed using Qt and can be used under different operating systems. The fpm tool is packaged and released using rpm under the Redhat / Debian operating system, is packaged and released using dpkg under the Debian / Ubuntu operating system, and is released using a 7z compressed package under Windows. All software packages contain all the environments required for the tool to run, which can support the rapid installation of the tool. The fpm can be installed using the command fpm 3rd install to install project dependencies, and the command fpm gen [qmake|cmake] to calculate the dependencies between modules and generate QMake or CMake projects.

2. The C++ software dependency management and automatic build tool of claim 1, wherein, The centralized software release warehouse is divided into upstream and downstream parts, and the version of the reusable project is independently selected for the current project, which creates conditions for version control.

3. The C++ software dependency management and automatic build tool of claim 1, wherein, The directory structure includes a three-party dependency directory, a build intermediate file directory, a release directory, a document directory, a module directory, a module content directory, and a project skeleton directory, which constrains the consistency of the upstream and downstream project directories and solves the export and import problems of reusable projects by defining import and export directories.

4. The C++ software dependency management and automatic build tool of claim 1, wherein, 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 the dependency relationship of external projects and the dependency relationship of the current project or external project modules. This way can clearly show the influence domain of different modules and support the management of module reuse.

Citation Information

Patent Citations

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

    CN118733098A