LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 983|回复: 6

Makefile 把新的compile時間傳到C程式裏

[复制链接]
发表于 2008-6-13 15:18:45 | 显示全部楼层 |阅读模式
我想在Make時 加入時間標記到 C程式裏
  像 XXXX v1.5.1 (2008-05-07 11:53:28 CST)
  
  請問Makefile中要怎樣寫
  而C中又如何接受呢?
  用#define  嗎?
  
  請問我該怎樣寫 謝謝
发表于 2008-6-13 17:45:41 | 显示全部楼层
[duxiaoyu@hnchen ~]$ cat Makefile
all:
        rm -f timestamp.c
        echo "char DATE[] = \"`date`\";" > timestamp.c
        gcc -o test timestamp.c test.c
[duxiaoyu@hnchen ~]$ cat test.c
#include <stdio.h>
extern char DATE[];

int main ()
{
        printf("compile timestamp is %s\n", DATE);
        return 0;
}
[duxiaoyu@hnchen ~]$ ./test
compile timestamp is 2008年 06月 14日 星期六 01:32:38 CST
[duxiaoyu@hnchen ~]$

方法有点土,不过还能用,你还可以把输出放到头文件里,变成宏定义。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-15 22:32:16 | 显示全部楼层
echo "char DATE[] = \"`date`\";" > timestamp.c
真是一個特別的用法

可是這樣還要再多一個timestamp.c

有沒有更簡潔的做法呢?


不需要任何多出來的 XX.C .....
回复 支持 反对

使用道具 举报

发表于 2008-6-16 00:26:14 | 显示全部楼层
  1. COMPILE_DATE=`date`
  2. gcc -DCOMPILE_DATE=$COMPILE_DATE -o test test.c
复制代码

这样在 test.c 里面就可以使用 COMPILE_DATE 这个 Marco 了。
回复 支持 反对

使用道具 举报

发表于 2008-6-16 10:10:29 | 显示全部楼层
你们。。。

  1. #include <stdio.h>

  2. int main()
  3. {
  4.         return printf("%s %s\n", __DATE__, __TIME__);
  5. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2008-6-17 09:57:18 | 显示全部楼层
楼上正解!要是控制格式输出的话,用sprintf也可,不过,好像---答非所问...
回复 支持 反对

使用道具 举报

发表于 2008-6-20 18:32:14 | 显示全部楼层
4楼的方法我也想过,可总是不行,makefile里不能直接使$COMPILE_DATE,
X11的点子才好,我怎么连这个内建的宏都忘记了,呵呵。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表