有兩個檔案,即 pyproject.toml 和詩歌.lock,它們位于名為dump的檔案夾中。我想在運行測驗時將這些檔案移動到 2 個目錄。
今天我做這個
PROJECT_DIR := $(realpath $(CURDIR))
BUILD_DUMP_DIR := $(PROJECT_DIR)/dump
DESTINATION_DIRS := unit system endtoend
PY_SOURCES = $(patsubst %,$(BUILD_DUMP_DIR)/%, pyproject.toml)
POETRY_SOURCES = $(patsubst %,$(BUILD_DUMP_DIR)/%, poetry.lock)
PY_PROJECT = $(foreach dir, $(DESTINATION_DIRS), $(patsubst %, $(BUILD_DUMP_DIR)/tests/$(dir)/%, pyproject.toml))
POETRY_PROJECT = $(foreach dir, $(DESTINATION_DIRS), $(patsubst %, $(BUILD_DUMP_DIR)/tests/$(dir)/%, poetry.lock))
$(PY_PROJECT): $(PY_SOURCES)
@echo "=> Moving $< to $@"
@cp $< $@
$(POETRY_PROJECT): $(POETRY_SOURCES)
@echo "=> Moving $< to $@"
@cp $< $@
copy-dump: $(PY_PROJECT) $(POETRY_PROJECT)
所以運行make copy-dump會將這些檔案移動到指定的目錄。意識到必須有更好的 MakeFile 命令來做到這一點。感謝所有輸入
uj5u.com熱心網友回復:
不確定我是否理解所有細節,但如果您使用 GNU make 并且您想將 2 個檔案分別復制(而不是移動)到 3 個不同的位置,則以下內容會簡單一些:
PROJECT_DIR := $(realpath $(CURDIR))
BUILD_DUMP_DIR := $(PROJECT_DIR)/dump
DESTINATION_DIRS := unit system endtoend
PY_SOURCES = $(BUILD_DUMP_DIR)/pyproject.toml
POETRY_SOURCES = $(BUILD_DUMP_DIR)/poetry.lock
PY_PROJECT = $(patsubst %,$(BUILD_DUMP_DIR)/tests/%/pyproject.toml,$(DESTINATION_DIRS))
POETRY_PROJECT = $(patsubst %,$(BUILD_DUMP_DIR)/tests/%/poetry.lock,$(DESTINATION_DIRS))
.PHONY: copy-dump
copy-dump: $(PY_PROJECT) $(POETRY_PROJECT)
.SECONDEXPANSION:
$(PY_PROJECT) $(POETRY_PROJECT): $(BUILD_DUMP_DIR)/$$(notdir $$@)
@echo "=> Moving $< to $@"
@cp $< $@
有關二次擴展的詳細資訊,請參閱GNU make 檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/364448.html
下一篇:bash:陣列變數的錯誤替換
