sed-i команда, чтобы оперативное редактирование работало и с GNU sed и с BSD/OSX

У меня есть make-файл (разработанный для gmake на Linux), что я пытаюсь портировать на MacOS, но это походит sed не хочет сотрудничать. То, что я делаю, использовать GCC автоматически сгенерировать файлы зависимости и затем настроить их немного использования sed. Соответствующая часть makefile:

$(OBJ_DIR)/%.d: $(SRC_DIR)/%.cpp
  $(CPPC) -MM -MD $< -o $@
  sed -i 's|\(.*\)\.o:|$(OBJ_DIR)/\1.o $(OBJ_DIR)/\1.d $(TEST_OBJ_DIR)/\1_utest.o:|' $@

В то время как это работает без проблемы под GNU/Linux, я получаю ошибки как следующее при попытке основываться на MacOS:

sed: 1: "test/obj/equipmentConta ...": undefined label 'est/obj/equipmentContainer_utest.d'
sed: 1: "test/obj/dice_utest.d": undefined label 'est/obj/dice_utest.d'
sed: 1: "test/obj/color-string_u ...": undefined label 'est/obj/color-string_utest.d'

Это походило бы sed обрубает символ, но я не вижу решения.

59
задан jww 28 October 2019 в 16:52
поделиться