Здравствуйте, ДимДимыч, Вы писали:
ДД>Коллеги, можно ли как-нибудь отследить ошибку при выполнении $(shell …) в Makefile? Достаточно, чтобы сам make в этом случае завершался с ошибкой.
Вообще, оно сохраняет то что скрипт/переменная напечатает: http://www.gnu.org/software/make/manual/html_node/Shell-Function.html
Можно попробовать проверить переменную $? сразу после вызова.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Это понятно, у меня с помощью shell читается содержимое файла в переменную. И нужно различать ситуации, когда файл отсутствует, когда есть, но пустой, и когда не удалось его прочитать.
V>Можно попробовать проверить переменную $? сразу после вызова.
потом проверяю $(lastword), но как-то громоздко получилось, хотелось бы упростить.
ну так оно вроде для коротенького кода, для длинного лучше таргет нормальный завести.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, ДимДимыч, Вы писали:
ДД>Разве можно результат выполнения таргета получить в переменную?
Похоже ты не тот инструмент используешь, что мешает использовать сразу шелл?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
V>Похоже ты не тот инструмент используешь, что мешает использовать сразу шелл?
В make уже реализовано отслеживание зависимостей по меткам времени модификации. Если шелл ближе к императивной парадигме, то make ближе к функциональной. В билд-системе с кучей компонентов хочется, чтобы при небольшом изменении конфигурации одного из компонентов пересобиралось не всё, а только то, что зависит от измененной конфигурации.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Здравствуйте, ДимДимыч, Вы писали:
V>>Похоже ты не тот инструмент используешь, что мешает использовать сразу шелл? ДД>В make уже реализовано отслеживание зависимостей по меткам времени модификации. Если шелл ближе к императивной парадигме, то make ближе к функциональной. В билд-системе с кучей компонентов хочется, чтобы при небольшом изменении конфигурации одного из компонентов пересобиралось не всё, а только то, что зависит от измененной конфигурации.
Тот кусок кода который ты привел вроде никаких зависимостей не отслеживает
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, ДимДимыч, Вы писали:
V>>Тот кусок кода который ты привел вроде никаких зависимостей не отслеживает ДД>Отслеживает сам make, он как бы для этого и предназначен. А этот код предоставляет данные, на основании которых строится дерево зависимостей. ДД>Вобщем, я заглянул в исходники make, там результат выполнения $(shell) в коде игнорируется, так что вопрос снят.
Ну так я тебе сразу предлагал это в шелле делать, а его можно и из таргета вызывать.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
V>Ну так я тебе сразу предлагал это в шелле делать, а его можно и из таргета вызывать.
В смысле, в отдельном шелл-скрипте, который вызывается в рецепте? Тогда результат выполнения только через промежуточный файл забирать, а этого тоже не хотелось бы.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Здравствуйте, ДимДимыч, Вы писали:
V>>Ну так я тебе сразу предлагал это в шелле делать, а его можно и из таргета вызывать. ДД>В смысле, в отдельном шелл-скрипте, который вызывается в рецепте? Тогда результат выполнения только через промежуточный файл забирать, а этого тоже не хотелось бы.
Если тебе промежуточный файлы мешают, то как то вообще странно использовать make.
CONTENT := $(call read,"file")
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
V>Если тебе промежуточный файлы мешают, то как то вообще странно использовать make.
Позволь уж я сам решу, каким инструментом в каком случае следует пользоваться. Я задал конкретный вопрос, подразумевающий однозначный ответ.
Но спасибо за попытку помощи и потраченное время.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)