Как я могу автоматически создать (и удалить), временный каталог в Make-файле?

Вы можете использовать аскопенфилы от Tkinter. Это очень похоже на FileDialog, но с модулем Tkinter.

import tkinter
from tkinter import askopenfilenames
root = tkinter.Tk().withdraw()

files = askopenfilenames() #This is the FileDialog window
10
задан pinkgothic 5 May 2011 в 14:42
поделиться

2 ответа

Я, кажется, вспоминаю, что способность звонить делает рекурсивно, что-то вроде:

all:
    -mkdir $(TEMPDIR)
    $(MAKE) $(MLAGS) old_all
    -rm -rf $(TEMPDIR)

old_all: ... rest of stuff.

Я сделал подобные приемы для того, чтобы сделать в подкаталогах:

all:
    @for i in $(SUBDIRS); do \
        echo "make all in $$i..."; \
        (cd $$i; $(MAKE) $(MLAGS) all); \
    done

Просто проверенный это и это хорошо работает:

$ cat Makefile
all:
    -mkdir tempdir
    -echo hello >tempdir/hello
    -echo goodbye >tempdir/goodbye
    $(MAKE) $(MFLAGS) old_all
    -rm -rf tempdir

old_all:
    ls -al tempdir

$ make all
mkdir tempdir
echo hello >tempdir/hello
echo goodbye >tempdir/goodbye
make  old_all
make[1]: Entering directory '/home/pax'
ls -al tempdir
total 2
drwxr-xr-x+ 2 allachan None 0 Feb 26 15:00 .
drwxrwxrwx+ 4 allachan None 0 Feb 26 15:00 ..
-rw-r--r--  1 allachan None 8 Feb 26 15:00 goodbye
-rw-r--r--  1 allachan None 6 Feb 26 15:00 hello
make[1]: Leaving directory '/home/pax'
rm -rf tempdir

$ ls -al tempdir
ls: cannot access tempdir: No such file or directory
9
ответ дан 3 December 2019 в 13:56
поделиться

С GNU делают, по крайней мере,

TMPDIR := $(shell mktemp -d)

получит Вас Ваш временный каталог. Я не могу придумать хороший способ очистить его в конце кроме очевидного rmdir "$(TMPDIR)" как часть all цель.

13
ответ дан 3 December 2019 в 13:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: