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