2016-11-16 3 views
1

убывания В моей Makefile в настоящее время все объектные файлы сортируются в алфавитном порядке с использованиемСортировка файлов объектов в GCC Makefile в порядке

ПРЕДМЕТЫ = $ (вроде $ (OBJECTS_UNSORTED)) в Makefile.

Я хочу отсортировать файлы по убыванию. Есть ли способ? Пробовал ниже варианту, но они не работают -

ПРЕДМЕТЫ = $ ((вроде -r) $ (OBJECTS_UNSORTED))

ответ

0

Там нет простого способа изменить порядок списка слов, встроенный в GNU делать.

Вы можете использовать sort функцию командного интерпретатора, чтобы сделать это, как это:

OBJECTS := $(shell for w in $(OBJECTS_UNSORTED); do echo $$w; done | sort -r) 

Или, вы можете создать рекурсивную функцию макроса в GNU сделать, чтобы это сделать, как это:

reverse = $(if $1,$(call reverse,$(wordlist 2,999999,$1)) $(firstword $1)) 

OBJECTS := $(call reverse,$(sort $(OBJECTS_UNSORTED))) 
+0

Разве вы не должны сортировать объекты перед их переворачиванием? – 2501

+0

Да, хорошая точка. Обновлено. – MadScientist

0

Это может быть достигнуто путем определения функции, которая добавляет слово к переменной. Вызывая эту функцию для каждого слова переменной, которая содержит отсортированные слова, слова эффективно меняются на противоположные:

OBJECTS_SORTED := $(sort $(OBJECTS)) 

define Prepend 
OBJECTS_SORTED_REVERSE := $1 $(OBJECTS_SORTED_REVERSE) 
endef 

$(foreach variable,$(OBJECTS_SORTED),$(eval $(call Prepend,$(variable)))) 

$(info $(OBJECTS_SORTED_REVERSE)) 

 Смежные вопросы

  • Нет связанных вопросов^_^