У меня есть два вопроса к одной проблеме, с которой я сталкиваюсь.
Мы приняли нерекурсивный steammake для проектов, использующих gcc
.В дальнейшем мы хотели бы использовать его для некоторых других кросс-компиляторов, скажем, микрочип C18, который не поддерживает опцию -MM
/ MD
для генерации зависимостей.
Я не хочу использовать makedepend, так как он очень старый идобавляет зависимости в make-файлы;далее, я считаю, будет сложно отделить объекты от источников с помощью makedepend.
Напоследок мои вопросы:
Существуют ли какие-либо легкодоступные генераторы зависимостей C / C ++ (аналогично -MM
/ -MD
опциям)?(Поддержка сборки требуется как для Windows, так и для Linux.)
Могу ли я использовать gcc
только для генерации файлов зависимостей и выполнения фактической компиляции с другим компилятором?Буду ли я сталкиваться с проблемами с этим подходом?Если да, какие изменения потребуются для следующего
# COMPILE_C_CMDS - Commands for compiling C source code.
define COMPILE_C_CMDS
@mkdir -p $(dir $@)
$(strip ${CC} -o $@ -c -MD ${CFLAGS} ${SRC_CFLAGS} ${INCDIRS} \
${SRC_INCDIRS} ${SRC_DEFS} ${DEFS} $<)
@cp ${@:%$(suffix $@)=%.d} ${@:%$(suffix $@)=%.P}; \
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
-e '/^$$/ d' -e 's/$$/ :/' < ${@:%$(suffix $@)=%.d} \
>> ${@:%$(suffix $@)=%.P}; \
rm -f ${@:%$(suffix $@)=%.d}
endef