Как заставить команды backtick терпеть неудачу в Makefiles? - PullRequest
1 голос
/ 12 февраля 2020

Не удается выполнить следующую цель Makefile:

test:
    echo `blah`

Как я могу сделать так, чтобы она не сработала, кроме выполнения команды backticked самостоятельно в предыдущей строке.

$ make --version
GNU Make 4.0
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

1 Ответ

0 голосов
/ 12 февраля 2020

Это не проблема, на самом деле. Make просто ждет, пока оболочка не вызовет fini sh, а затем проверяет код выхода. Если это 0 (успех), то make предполагает, что задание выполнено успешно. Если это любое другое значение, make считает, что задание не выполнено.

Если вы запустите эту команду в оболочке, вы увидите, что код завершения не сохраняется:

$ echo `bah`
  ...errors...
$ echo $?
0

Там нет ничего make может сделать с этим Вам нужно будет найти способ убедиться, что ваша команда завершается с ошибкой. Вы не предоставили нам достаточно информации о том, какую именно команду вы хотите выполнить, чтобы помочь вам решить эту проблему.

ETA

Существует множество возможностей. Но поскольку вы по-прежнему не предоставили никаких реальных подробностей, я просто предлагаю одну возможность: вы можете проверить полученное значение, чтобы увидеть, было ли оно пустым:

test:
        var=`blah`; [ -n "$$var" ] || exit 1; ...do stuff with $$var...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...