【问题标题】:What does @[arguments] mean in a makefile?@[arguments] 在生成文件中是什么意思?
【发布时间】:2015-05-01 17:19:32
【问题描述】:

makefile 中的@[arguments] 语法是什么意思?例如,我遇到了一个包含以下内容的 makefile:

all: $(EXEC_NAME)
   @[ -p video_fifo ] || mkfifo video_fifo

这是做什么的?

【问题讨论】:

    标签: makefile


    【解决方案1】:

    什么都没有。你解析不正确。

    前导的@ 用于制作。它的意思是“使这个命令静音”。请参阅 GNU make 手册中的 Recipe Echoing

    该行的其余部分是一个 shell 脚本。在这种情况下,它从测试[ -p video_fifo ] 开始(您经常在if 语句if [ -n "$var" ] 的上下文中看到这一点,或者在the bash manual 中看到更多关于[/test-p 的信息如果[ 测试返回false(因此|| OR 运算符),则|| mkfifo video_fifo 创建video_fifo fifo。

    【讨论】:

    • 那条线是做什么的,如果它还不存在,它会生成 video_fifo 吗?
    • 正确。如果video_fifo 是先进先出,那么[ -p video_fifo ] 返回true 并且行结束(||/OR 短路并完成)。如果它不存在或不是先进先出,则测试返回 false 并运行 || 的右侧以创建先进先出(我想如果存在其他一些非先进先出文件,这将失败但这可能不太可能)。
    猜你喜欢
    • 1970-01-01
    • 2016-11-08
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 2016-11-26
    • 1970-01-01
    相关资源
    最近更新 更多