如何使用makefile在没有扩展的情况下回显变量

时间:2014-09-30 14:46:22

标签: makefile environment-variables echo

我正在使用make并且正在使用make文件帮助我使用rpm-builder构建rpm。您必须使用以下布局制作rpm.properties文件。

  rpm_name=my_app
  rpm_version=1.0
  rpm_release=$(date +%s)
  rpm_summary=${rpm_name}
  rpm_install_dir=/projects/my_app/webapps
  files=src/my_application.properties,log4j.xml

这是我用来做这个的makefile的一部分

rpm:
    @echo rpm_name=foo > rpm.properties
    @echo rpm_version=1.0 >> rpm.properties
    @echo rpm_release=$(date +%s) >> rpm.properties
    @echo rpm_summary=foo >> rpm.properties
    @echo rpm_install_dir=~/foo_install >> rpm.properties 
    @echo file=foo.class >> rpm.properties
    @echo rpm_install_post_script_file=foo.sh >> rpm.properties
    @echo rpm_username=root >> rpm.properties
    @echo rpm_groupname=root >> rpm.properties

make文件正常工作,期望与

一行

@echo rpm_release=$(date +%s) >> rpm.properties

哪个不输出到rpm.properties文件。 rpm.properties输出如下

rpm_name=foo
rpm_version=1.0
rpm_release=
rpm_summary=foo
rpm_install_dir=~/foo_install
file=foo.class
rpm_install_post_script_file=foo.sh
rpm_username=root
rpm_groupname=root

我正在寻找

rpm_name=foo
rpm_version=1.0
rpm_release=$(date +%s)
rpm_summary=foo
rpm_install_dir=~/foo_install
file=foo.class
rpm_install_post_script_file=foo.sh
rpm_username=root
rpm_groupname=root

有没有人知道如何输出由make文件解释为像$(date +%s)这样的变量的文本行是否为非扩展的纯文本?

1 个答案:

答案 0 :(得分:2)

您需要从make中转义$。然后,您还需要从shell中转义$

使用:

@echo rpm_release='$$(date +%s)' >> rpm.properties

如果您愿意,还可以使用一个echo / printf和一个重定向而不是倍数来完成所有这些操作。