gpt4 book ai didi

c++ - 如何删除 QT 项目文件中的重复代码?

转载 作者:行者123 更新时间:2023-12-02 10:04:36 24 4
gpt4 key购买 nike

我有一个旧的 QT 项目文件,其中包含多次几乎相同的配置部分。这个配置部分基本上是下载了open-api生成器的某个版本,用open-api生成器生成QT代码 stub ,并将代码生成添加到QT的pre-target依赖中,这样就被称为“自动”。

该部分的简化示例:

OPENAPI_CLI_VERSION = 4.2.3
codegentemp1.target = .codegentemp1
codegentemp1.commands = \
echo $$PWD/openapi-generator/src/main/resources/api-spec-1.yml \
$${OPENAPI_CLI_VERSION}.jar ... \
touch $$codegentemp1.target
QMAKE_EXTRA_TARGETS += codegentemp1
PRE_TARGETDEPS += .codegentemp1

本节被复制多次,只有少数变量发生变化,例如:
  • api-spec-1.yml, api-spec-2.yml, api-spec-3.yml, ...
  • codegentemp1,
    codegentemp2, codegentemp3, ...

  • 并且一些变量保持不变,例如:
  • OPENAPI_CLI_VERSION

  • 问题:

    是否可以将此部分移动到类似于 QT 项目文件中的函数并调用此函数,例如和:
  • generate_api(4.2.3, codegentemp1, api_spec-1.yml)

  • 提前致谢!

    更新 1

    我基本上想为“.commands”字段分配一些冗余的Shell脚本代码,其中包含可变参数,例如open api CLI版本(每个分配可能会发生变化),即类似于:
    func1(openapiversion, targetname) {
    echo $$PWD/openapi-generator/src/main/resources/api-spec-1.yml
    OPENAPI-$$openapiversion.jar ...
    touch $$targetname
    }

    OPENAPI_CLI_VERSION = 4.2.3
    codegentemp1.target = .codegentemp1
    codegentemp1.commands = func1($$OPENAPI_CLI_VERSION, $$codegentemp1.target)
    QMAKE_EXTRA_TARGETS += codegentemp1
    PRE_TARGETDEPS += .codegentemp1

    最佳答案

    是的,qmake language manual说明如何创建自己的函数,就在 the section on the replace functions 下方:

    defineReplace(functionName){
    #function code
    }

    关于c++ - 如何删除 QT 项目文件中的重复代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60946535/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com