2017-02-23 21 views
0

Я бросаю полотенце с этим.Файл python Foreach в подкаталоге

У меня довольно успешный makefile, который находит файлы в подкаталоге, передавая их как фильтры для pandoc. Он отлично работает в путях без пробелов, но я не могу заставить его вести себя по путям, включающим пробелы.

Вот MWE:

BASEDIR=$(CURDIR) 
STYLEDIR=$(BASEDIR)/style 
FILFILES := "$(shell find "$(STYLEDIR)" -name *.py)" 
FILTER := $(foreach "$(FILFILES)", "$(FILFILES)", --filter $(FILFILES)) 
TEXFLAGS = --filter pandoc-crossref --filter pandoc-citeproc $(FILTER) --latex-engine=xelatex 

pdf: 
    pandoc document.md $(TEXFLAGS) 

Для того, чтобы на примере работы вы должны запустить сборочный файл в какой-нибудь каталог с пробелами, попробуйте this md dir, создайте подкаталог style и добавить любой файл .py. Теперь запустите, и вы увидите, что FILFILES выбирают правильный файл python, но foreach создаст три экземпляра, следовательно --filter --filter --filter. Почему это? Что я делаю не так?

В случае, если вы хотите полный Makefile: here

ответ

1

это все, но невозможно использовать слово (в том числе имен файлов), содержащий пробела с производством.

Чтобы быть ясным, полностью игнорируйте все типы цитирующих символов (двойные, одиночные, обратные).

В некоторых ситуациях вы можете использовать трюки, позволяющие ему работать. Однако вы не дали нам никакой информации о том, что вы на самом деле делаете; вы показываете, как вы назначаете переменные FILFILES и FILTER, но вы не показываете, как вы их используете.

Если эти переменные используются только внутри рецептов, вы часто можете заставить их работать. Если вы используете их как предварительные условия, тогда это будет очень сложно, если не невозможно.