【问题标题】:Make: How could i change the path of a files which matches certain patternMake:如何更改与特定模式匹配的文件的路径
【发布时间】:2019-10-01 09:02:04
【问题描述】:

我是 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/.. 我上面的代码有什么问题吗?请帮忙!

【问题讨论】:

    标签: makefile gnu-make gnu


    【解决方案1】:

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

    我敢说实际的要求可能更像是“在发布版本中,测试应该安装在$(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)
    

    我上面的代码有什么问题吗?

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

    【讨论】:

      猜你喜欢
      • 2015-06-05
      • 1970-01-01
      • 2010-12-11
      • 2017-11-26
      • 2013-04-25
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      相关资源
      最近更新 更多