У меня есть требование заменить пути к файлам на основе определенного условия.
Я полагаю, что фактическое требование, скорее всего, больше похоже на то, что "тесты должны быть установлены в каталоге, названном $(TARGET_EXCEPTION)
в сборке релиза, но в каталоге, названном * 1006. * Различие важно, потому что это более понятно и более портативно, если просто назначить путь в первую очередь.
Это может выглядетьчто-то вроде этого:
# 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)
Что-то не так в моем коде выше?
Он пытается реализовать плохой подход. Кроме того, он вполне может не взаимодействоватькак вам требуется с правилами вашего make-файла, относящимися к затронутым файлам. Вышеприведенное также может иметь последнюю проблему, но в этом случае есть и ясное решение: ссылаться на затронутые файлы везде по формату имени, указанному в примере.