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

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

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

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

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 отбрасывает персонажа, но я не вижу решения.

Ответы на вопрос(7)

Ваш ответ на вопрос