Makefile:修改目标中的变量
Makefile: Modify variable in target
我有一个包含文件列表的变量。它们将被传递到我的模拟环境中。
VHDL_SOURCES += $(PWD)/common/ip/file1.vhd \
$(PWD)/common/ip/file2.vhd \
$(PWD)/common/ip/file3.vhd \
$(PWD)/common/ip/file4.vhd \
其中一个目标创建了一堆新文件,应将它们添加到列表中。
# sim target: Add requirement filelist.txt
.PHONY: sim
sim: add_xilip_sources
# all other definitions are defined in the common makefile
include $(PWD)/scripts/cocotb/common_makefile/Makefile
.PHONY: add_xilip_sources
add_xilip_sources: $(BUILD_PWD)/filelist.txt
XILIP_FILES = $(shell cat $<) # read the filelist into an variable
# prepend the new filelist to the VHDL_SOURCES list.
$(BUILD_PWD)/filelist.txt: $(SCRIPT_PWD)/make_switch_ip.tcl
vivado -mode tcl -source $(SCRIPT_PWD)/make_switch_ip.tcl
如何修改目标中的变量?
你不能。 Make 是声明性的,或两步;首先指定构建环境,然后执行。您不能在执行时修改构建环境(例如变量),或者至少不能在不同的配方之间修改。
你可以做的是使用文件而不是变量:
# vhdl_sources.txt containing VHDL_SOURCES
# vhdl_sources.txt.full containing VHDL_SOURCES plus generated filelist.txt content
vhdl_sources.txt.full: $(BUILD_PWD)/filelist.txt vhdl_sources.txt
cat $^ > $@
我有一个包含文件列表的变量。它们将被传递到我的模拟环境中。
VHDL_SOURCES += $(PWD)/common/ip/file1.vhd \
$(PWD)/common/ip/file2.vhd \
$(PWD)/common/ip/file3.vhd \
$(PWD)/common/ip/file4.vhd \
其中一个目标创建了一堆新文件,应将它们添加到列表中。
# sim target: Add requirement filelist.txt
.PHONY: sim
sim: add_xilip_sources
# all other definitions are defined in the common makefile
include $(PWD)/scripts/cocotb/common_makefile/Makefile
.PHONY: add_xilip_sources
add_xilip_sources: $(BUILD_PWD)/filelist.txt
XILIP_FILES = $(shell cat $<) # read the filelist into an variable
# prepend the new filelist to the VHDL_SOURCES list.
$(BUILD_PWD)/filelist.txt: $(SCRIPT_PWD)/make_switch_ip.tcl
vivado -mode tcl -source $(SCRIPT_PWD)/make_switch_ip.tcl
如何修改目标中的变量?
你不能。 Make 是声明性的,或两步;首先指定构建环境,然后执行。您不能在执行时修改构建环境(例如变量),或者至少不能在不同的配方之间修改。
你可以做的是使用文件而不是变量:
# vhdl_sources.txt containing VHDL_SOURCES
# vhdl_sources.txt.full containing VHDL_SOURCES plus generated filelist.txt content
vhdl_sources.txt.full: $(BUILD_PWD)/filelist.txt vhdl_sources.txt
cat $^ > $@