【问题标题】:cp Command Giving Error in Make filecp 命令在 Make 文件中给出错误
【发布时间】:2011-06-21 10:59:41
【问题描述】:

您好,在执行下面的 make 文件代码时,我收到一条错误消息,

Signing File 3E0022__.FPG
cp: missing destination file  ******Error during cp command 
Try `cp --help' for more information.****

这是我的脚本:

    for fpga in $(LIST_A); do\
            link=1;\
            for disFpga in  $(LIST_B); do\
                    if [ "$$fpga" = "$$disFpga" ] ;then\
                            echo "Signing File $$fpga";\
                            cp $($(fpga)) $(PKG)/$(fpga);\ ===> * Error at this Point*              
                               link=0;\
                    fi;\
            done;\
                    if [ $$link -eq 1 ] ;then  echo "Linking Done for $$fpga  File";\
                     fi;\
    done;

请帮我解决这个问题

谢谢

阿伦

【问题讨论】:

  • $($(fpga)) 正在解析为空字符串。

标签: shell unix makefile gnu gnu-make


【解决方案1】:

您将 Make 变量与 shell 变量混合在一起。这会做我认为你想要的:

cp $$fpga $(PKG)/$$fpga;\

【讨论】:

    【解决方案2】:

    我认为$($(fpga)) 是错误的。应该是$(fpga)

    【讨论】:

    • 我已经尝试过,但它不起作用,在这里我想添加一条评论,如果我使用'foreach' cp 命令将使用相同的代码,但如果我使用 for 循环它不会工作 。我认为for循环是shell构造和foreach make构造。
    • 这是一个shell脚本吗?如果是这样,变量替换应该是${fpga} 而不是$(fpga)
    • 不,我在 gnu make 文件上做这个脚本。
    • 我可以在这里使用 foreach 代替 .. 或者任何人都可以建议我一些其他方法来实现相同的逻辑
    • 如果是 make 脚本,$($(fpga)) 会递归替换两次,这就是为什么 cp 似乎只有一个参数。如果是shell脚本,就是语法错误。
    猜你喜欢
    • 2011-09-15
    • 1970-01-01
    • 2016-05-30
    • 2014-11-18
    • 2017-04-06
    • 2018-11-18
    • 2019-07-07
    • 2015-09-06
    • 1970-01-01
    相关资源
    最近更新 更多