Sep 19, 2016 17:37
Помогаете мне тут... Добрые вы :)
Подскажите, как сделать так (в make, наверное?), чтобы оно компилировало не все подряд, а только то, что реально используется - отслеживая цепочку #include?
И вдогонку - линкер тупо собирает обьектники или же берез только те функции, которые реально используются? Или если не выбрасывает ненужное, то как это
Вопрос,
Программизмы
Leave a comment
SOURCES := $(wildcard *.c)
deps: $(SOURCES:.c=.d)
%.d: %.c
gcc -M $(CFLAGS) $< $^
-include *.d
По второму вопросу - линкер работает на уровне отдельных секций (если не включено lto), поэтому -ffunction-sections и что-то еще кажется надо линкеру, кажется -gc-sections.
Reply
C_FLAGS += -fdata-sections -ffunction-sections
LDFLAGS += -Wl,--gc-sections
Впрочем все легко гуглится.
Еще вариант - можно настроить QT Creator, чтобы там все компилировать/редактировать. Если в проекте будет хотябы мегабайт исходников - поиск по ним важен очень.
Reply
а может ли мэйк удалить лишнее?
то есть, можно ли задать правило, что файл А мешает сборке файла Б и перед сборкой Б надо _удалить_ файл А?
Reply
Reply
я именно про явное указание взаимоисключающих целей
Reply
Если хочется просто очищать сборочный каталог перед тем как, то это просто:
.PHONY: rebuild-all clean build
rebuild-all: clean build
clean:
rm -rf $(EVERYTHING)
rm -rf builddir/
rebuild: target.exe doc.html ...
Reply
Reply
Leave a comment