Make:我如何更改与特定模式匹配的文件的路径

Make: How could i change the path of a files which matches certain pattern

我是 GNUmake 新手。

我需要根据特定条件替换文件路径。

TARGET_EXCEPTION := /home/ip/lib_build
TGT_TOOLS := /demo/build/new_project
ifdef SET_BUILD
 ifneq (0,$(RELEASE))
   FILES += $(addprefix $(TARGET_EXCEPTION)/tools/test/,$(subst $(TGTTOOLS)/tools/test/,,$(RELEASE_FILES)))
 endif
endif

RELEASE_FILES 变量分配了多个文件路径。在这些文件中,我只对带有 $(TGT_TOOLS)/tools/test/ 的文件夹感兴趣,并将其替换为 $(TARGET_EXCEPTION)/tools/test/.. 有什么问题吗我上面的代码?请帮忙!

I have a requirement to replace the file paths based on certain condition.

我敢说实际要求可能更像是“测试应该安装在发布版本中由 $(TARGET_EXCEPTION) 命名的目录中,但在其他情况下应安装在由 $(TGT_TOOLS) 命名的目录中。区别很重要,因为首先适当地分配路径更清晰、更便携。

可能看起来像这样:

# Possible test install locations
TARGET_EXCEPTION := /home/ip/lib_build
TGT_TOOLS := /demo/build/new_project

####
#
# Determine which location to use
#

ifdef SET_BUILD
  TEST_INSTALL_RELEASE := $(RELEASE)
else
  TEST_INSTALL_RELEASE := 0
endif

ifneq (0,$(TEST_INSTALL_RELEASE))
  TEST_DIR := $(TARGET_EXCEPTION)
else
  TEST_DIR := $(TGT_TOOLS)
endif

#
####

# Define the release files in the desired location from the start
RELEASE_FILES := \
  # ...
  $(TEST_DIR)/tools/test/test1 \
  $(TEST_DIR)/tools/test/test2 \
  # ...

# No substitution needed; the targets are already named correctly
FILES += $(RELEASE_FILES)

Is there anything wrong in my above code?

它试图实施一种糟糕的方法。此外,它很可能无法按照您的要求与与受影响文件相关的 makefile 规则进行互操作。上述也可能存在后一种问题,但在那种情况下也有一个明确的解决方案:通过示例中给出的名称格式在各处引用受影响的文件。