小编f.e*_*.co的帖子

在关联文件中记录新版本的版本号(文档)

我将是你知道如何在那里办理兴趣碰撞的版本号为新版本问题.

如何处理相关文件中的版本号,如手册页等.

该软件使用gnu工具链构建,因此autoconf,automake等可用,并用于应用程序的版本号.这样信息就可以重复使用了.

git用作vcs.

一种可能性是在Makefile.am中引入一个额外的新目标,它使用sed/awk来替换所有相关文件中的版本号和日期.该目标可以在开发新版本时(在分支之后)调用一次.

然后,当人们进行项目的git克隆或者发布tar tar时,项目可以使用正确的信息构建.当然,在开始开发新版本时,必须记住运行此make目标.

另一个选择是使用dist目标的钩子进行sed/awk替换.但这会使项目的git存储库处于没有正确版本号与关联文件关联的状态.

我更喜欢做第一个解决方案,因为它还在git历史记录中记录了正确的版本号.

在进行sed/awk替换时,您更喜欢"在文件中"或使用autoconf/automake工具中的模板文件.我看到两种方法的优点和缺点.

你如何处理相关文件的版本控制.您是否在开发阶段开始更改它们,是否在发货前更改它们,是否更换了infile或者您更喜欢使用模板?

谢谢.

linux version-control build-automation gnu autotools

9
推荐指数
2
解决办法
2601
查看次数

在Mac OSX和Linux下使用printf语句键入转换

我有一些代码在Mac OSX和Linux(Ubuntu,Fedora,...)下表现不同.这是关于printf语句中的算术运算中的类型转换.代码使用gcc/g ++编译.

下列

#include <stdio.h>
int main () {
  float days = (float) (153*86400) / 86400.0;
  printf ("%f\n", days);
  float foo = days / 30.6;
  printf ("%d\n", (int) foo);
  printf ("%d\n", (int) (days / 30.6));
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

在Linux上生成

153.000000
5
4
Run Code Online (Sandbox Code Playgroud)

在Mac OSX上

153.000000
5
5
Run Code Online (Sandbox Code Playgroud)

为什么?

令我惊讶的是,这适用于Mac OSX和Linux

printf ("%d\n", (int) (((float)(153 * 86400) / 86400.0) / 30.6));
printf ("%d\n", (int) (153 / 30.6));
printf ("%.16f\n",    (153 / 30.6));
Run Code Online (Sandbox Code Playgroud)

为什么?我根本没有任何线索.谢谢.

c c++

5
推荐指数
1
解决办法
1504
查看次数

标签 统计

autotools ×1

build-automation ×1

c ×1

c++ ×1

gnu ×1

linux ×1

version-control ×1