English 中文(简体)
自动增加Qt造物厂的建筑数量
原标题:Automatic increment of build number in Qt Creator
  • 时间:2009-09-13 07:06:49
  •  标签:

我希望在C++来源中有一个变量(或#define),在我每次利用Qt造物公司制定源代码时,将予以加强。 难道我能做些什么,也许有些变造者会gin或类似吗? 如果我利用指挥线上的“面包”来建设,那是怎么办?

最佳回答

在阁下的档案中,你可以产生一个包含指挥线方案结果的变量。 那么,你就可以利用这一方法确定定义。

BUILDNO = $$(command_to_get_the_build_number)
DEFINES += BUILD=$${BUILDNO}

如果你只想增加一个简单数目的话,你可以使用一个非常简单的文字:

#!/bin/bash
number=`cat build_number`
let number += 1
echo "$number" | tee build_number #<-- output and save the number back to file

我应该指出,这将导致每当你建造一个建筑点,如果你试图建造,但失败,还会增加建筑数量。 一种更好的办法是根据守则的状况获得一个建筑编号,而许多版本的控制工具能够使你看到一个案文,即使不是几个文本。

问题回答

https://stackoverflow.com/a/5967447/1619432。

:

build_nr.commands = build_inc.bat
build_nr.depends = FORCE
QMAKE_EXTRA_TARGETS += build_nr
PRE_TARGETDEPS += build_nr

HEADERS  += build.h

1. 建设:

@echo off 
set /p var= <build.txt 
set /a var= %var%+1 
echo %var% >build.txt
echo #define BUILD %var% >build.h
echo %var%

使用

#include "build.h"
...
qDebug() << "Build number:" << BUILD;

As I wrote before after some testing I found that the original solution has a problem since the version number is not updated every time a new build is done. In a lot of cases I had edited a source file, run the build, but still got the same build number ... The building process just decided that nothing was changed and skipped the step which would have updated the build number. I first attempted to find a way to force that step, but couldn t figure it out. Finally I decided to go a different way. Now I use the script to generate a header file build_number.h which contains a #define BUILD with the updated number behind. So Calebs script is now a bit modified (build_number.sh) :

#!/bin/bash
number=`cat build_number`
let number++
echo "$number" | tee build_number #<-- output and save the number back to file
echo "#define BUILD ""$number" | tee ../MyProject/build_number.h

增益数仍然储存在一份名为的文档内。 我本可以删除第三份档案,将生成的头号档案贴上标签,但决定不这样做。 请注意,文字和生成的头盔位于项目目录中,而build_ number文档载于建筑目录中。 这并非完美无缺,但我可以与之共存。

为了把事情集中起来,现在还有一些事情要做。 首先,必须在Qt设计商的项目中添加生成的头盔文件......标题-Files和“现有档案”上的立标式。 其次,必须列入C++-文件,在查阅中标的栏目......#include“build_ number.h>,最后但至少须对项目档案作出一些增补(My Project.pro)。 请注意,我从Calebs办法中删除了 st子,因此我们从这里的rat头开始:

build_nr.commands = ../MyProject/build_number.sh
build_nr.depends = FORCE
QMAKE_EXTRA_TARGETS += build_nr
PRE_TARGETDEPS += build_nr

这些行文(交给欧洲复兴开发银行科处理)迫使执行文字,该章的序号是<代码>build_ number的最后一个建筑编号,加之后写,并生成<代码>build_ number.h文档的最新版本。 由于该项目的部分来源,新价值每次都与法典挂钩。

值得一提的是,现在建筑过程是never,认为没有任何变化。 因此,即使您的法典没有改变,新的版本将产生新的版本,并建立一个新的双版。 旧的解决办法留下了法典修改后的数字,这一新的解决办法意味着即使来文方没有变化,也会出现新的建筑,因为我不得不改变这个标题。 人们宁愿在其中做一些事情,但因为头盔只包含在一个地方,重建速度非常快,而且没有多少人受伤。 但是,如果有人知道如何获得这两个世界的最佳选择,请提出建议。 至少现在,我没有两部不同的双双双版,其编号相同。

Caleb的建议是巨大的,但就我而言,没有“在箱子外”工作。 我只字不提一些错误,用一些读写。 变化很小。 我在乌兰巴托使用Qt 4.7。 如果你相信,第一种改动是,从<代码>let number += 1到let number++/code>。 ...... 我通常使用/program Windoze,因此,我可以解释,但当我从原情况下的指挥线(快车)手中掌握文字时,我会发现错误,在变化的案例中,数字都很好,增量数字会回来......

由于Caleb没有完全报告,我使用了build_ number.sh 作为单壳书写名称,并用<代码>build_ number/code>(没有.sh)做了另一篇档案,在其中没有任何其他内容。

最后和最臭名昭著的泡沫是通过在Qt项目档案中替换BUILDNO=$(command_to_get_the_build_ number)而确定的。 Note the system after $ and the required ./ in front of the file name. 后一种情况对经常的六氯环己烷用户来说是初级的,但对于一个Windows用户来说并不如此。

希望使所有人像我本人一样,更加直截了当。 如果您寻求包括职能参考、先进使用等在内的面包车,可在Qt设计师帮助科读更多。

Oh, 最后一个词......我也不得不改动DEFINES +=-DBUILD=${BUILDNO to DEFINES += BUILD=${BUILDNO},这样,-D就座。 在你的C++代码中,你将使用<条码>BUILD,如您在文件上填写了<条码>,编号1234<>。

Here s a solution for Win7 I came up with based on handle s solution. This solution also makes Windows give yer version # when you right-click yer target, and choose Properties | Details. It works in Win7, and probably most earlier versions.

Ok, 您使律师建设:

@echo off
copy /b myapp.rc +,,
set /p var= <build.txt 
set /a var= %var%+1 
echo %var% >build.txt
echo #define BUILD %var% >build.h

并把它放在律师身上。 (copy /b myapp.rc +, is inscrutablesoft-eese for “touch” - to Update a file s time-stamp.) 至今,情况良好,!

如果你不需要列入本手册的版本,这一部分是任择的。 a. 创建弧文档,例如:

#include "build.h"

1 VERSIONINFO
FILEFLAGS 32
FILEVERSION 1, 0, BUILD, 0
PRODUCTVERSION 1, 0, BUILD, 0
FILEOS 4
FILETYPE 1

{
    BLOCK "StringFileInfo"
    {
        BLOCK "040904B0"
        {
            VALUE "FileDescription", "program"
            VALUE "OriginalFilename", "program.exe"
            VALUE "CompanyName", "you"
            VALUE "FileVersion", "Release"
            VALUE "LegalCopyright", "Copyright (c) 2016, you, fool!"
            VALUE "ProductName", "Yer proggie"
            VALUE "ProductVersion", "Release"
        }
    }
    BLOCK "VarFileInfo"
    {
        VALUE "Translation", 0x0409, 0x04B0
    }
}

更完整的版本可上网查阅:Versioning DLs。 BTW:它在没有ValFileInfo区的情况下打工。 这弧被用于像右翼涂.一样的 st,并在房地产细节中获取这种信息。 我有一份用于这一胎儿和 app子的M.rc文档,并在资源下增加Qt造物的其他资源。

不这样选择: 这里,我花了一些时间寻找。 在盖特造物公司,开门,点击很少的计算机icon,将其释放。 Click on “Projects”. 点击“建设步骤”,选择海关程序步骤,在排在清单首位之前点击“^”。 Say You ve known yer .rc, “myapp.rc”。 下面是:

Command: cmd.exe
Arguments:/c build_inc.bat
Working Directory: %{CurrentProject:Path}

虽然基于凯克的版本可能很好地利用了来自民主选举学会的指挥线或指挥线工具,但我相信,建筑步骤比较可取。 变造者实际上为每个建筑开q;但是,每个建筑都建起步骤。

现在,在律师档案中添加:

RC_FILE +=  myapp.rc

此外,我向律师提出上诉。 炮弹在“其他文件”下显示。

现在重建。 每次重建都会触发资源档案的交接,从而每次都运行“弧”。 否则,建筑群落数就输入双轨权。 这对我来说很快。 每一次重建都会增加这一数字。 我只想在“释放”建筑中添加这些内容;这样,减小就不了。 他们只是使用最后建筑的数量。 我认为,为了避免出现错误,你需要释放一次。 这部工程没有在盖特造物公司每次单独重新开张;每次给你不同的建筑编号。 它不会引发任何其他的反弹。 你们有管理“传统”和每次连接的间接费用,而不是在一切到现在的情况下做任何事情;但是,德国统计局,我只是为了释放而做的;你几乎总是与建造或经营任何路上的联系;而且“弧”也迅速。

选择: 无论在你想要在家,你都可以把生物浓缩系数的预处理器编号移出。 #. (说明:你还可以添加与下列内容相符合的yer:

IDI_ICON1 ICON DISCARDABLE "Icons/myicon.ico"

这使得它甚至在档案管理之前就在探索者身上显示。

您还可以在Qt造物公司正式添加“build.h”一词,将它列入你希望使用建筑号的档案中,并将其作为一种扼杀手段,例如:

#include <QDebug>
#include "build.h"

#define STR_EXPAND(tok) #tok
#define STR(tok) STR_EXPAND(tok)

qDebug() << QString("(build ")+STR(BUILD)+")";

我刚刚注意到一个副作用: 如果你这样做,它将在释放之前重建。 我猜测,这种价格不会太坏。 我猜测,我总是能够把时间复制到释放目录中,并从探索者那里管理,或者仅仅用我的外卷汇编,介绍“北极”的运行情况以及每一次释放之间的联系。 为此,我只能创造一种外部工具,用一个关键的捷径加以管理。 我当然欢迎这方面的任何改进。 目前,“左右”的编篡和与每一行连接起来,我不是两处都花了很长的时间。 然而,人们:自动建筑号码!

!!

Edit: Optional: 为了在你建设或重建项目时,而不是在你管理项目时(即使建筑在释放时总是会发生),将建筑数量增减到“建设项目”和“开办项目”,选择“管理过程步骤”:

Command: cmd.exe
Arguments: /c if exist build.old copy /y build.old build.txt
Working Directory: %{CurrentProject:Path}

然后,增加

copy /y build.txt build.old

页: 1 甚至有可能制作新的项目模板:

Edit:现在,我与一个而不是两个习俗一起工作,制定步骤。





相关问题
热门标签