Makefile中怎么传递变量

harberxie 2008-12-09 09:15:37
Makefile文件中想把获取当前时间并传递到C程序中

如:
MAKE_TIME = 'date +%Y%m%d%H%M%S'
CFLAGS +=-DVERSION_TIME=$(MAKE_TIME)

但编译的时候宏定义VERSION_TIME的值为'date +%Y%m%d%H%M%S',而不是先获取当前时间如20081213091430的值付给
VERSION_TIME。
...全文
1450 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
once_and_again 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mymtom 的回复:]
引用 1 楼 liujixin8 的回复:
我从你的题目中,发现,MAKE_TIME的定义有问题,应该写做:MAKE_TIME=`date +%Y%m%d%H%M%S`。 也就是说date +%Y%m%d%H%M%S要用`来括起来。就是键盘上Tab键上面,1键旁边的那个键。而不是单引号。

另外,在执行make命令时,可以制定Makefile中某一变量的值。例如你在这里用MAKE_TIME在Makefile文件中定义了,那么你就可以用make MAKE_TIME=`date +%Y%m%d%H%M%S`来编译,这样,在编译过程中,该值…
[/Quote]back quote key
mymtom 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liujixin8 的回复:]
我从你的题目中,发现,MAKE_TIME的定义有问题,应该写做:MAKE_TIME=`date +%Y%m%d%H%M%S`。 也就是说date +%Y%m%d%H%M%S要用`来括起来。就是键盘上Tab键上面,1键旁边的那个键。而不是单引号。

另外,在执行make命令时,可以制定Makefile中某一变量的值。例如你在这里用MAKE_TIME在Makefile文件中定义了,那么你就可以用make MAKE_TIME=`date +%Y%m%d%H%M%S`来编译,这样,在编译过程中,该值就被正确传递进去了。
[/Quote]
正解
[code=BatchFile]
MAKE_TIME = `date +%Y%m%d%H%M%S`
CFLAGS += -DVERSION_TIME=$(MAKE_TIME)
all:
echo $(CFLAGS)
[/code]
hupo1982 2008-12-09
  • 打赏
  • 举报
回复
楼主的意思是想传递到C程序中,我觉得不必要在Makefile中取得,你可以直接在C代码里面来执行啊
好像popen和exec可以做到,具体我也没弄过
liujixin8 2008-12-09
  • 打赏
  • 举报
回复
我从你的题目中,发现,MAKE_TIME的定义有问题,应该写做:MAKE_TIME=`date +%Y%m%d%H%M%S`。 也就是说date +%Y%m%d%H%M%S要用`来括起来。就是键盘上Tab键上面,1键旁边的那个键。而不是单引号。

另外,在执行make命令时,可以制定Makefile中某一变量的值。例如你在这里用MAKE_TIME在Makefile文件中定义了,那么你就可以用make MAKE_TIME=`date +%Y%m%d%H%M%S`来编译,这样,在编译过程中,该值就被正确传递进去了。

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧