Правильное использование Wildcard в Makefile - PullRequest
0 голосов
/ 18 октября 2011

Мне нужно использовать make-файл, чтобы скопировать все содержимое, скажем, папки 1 в папку 2. Содержимое папки 1 - это 5 файлов с именами, такими как abc_1.c, abc_2.c, .. и так далее.Пути к папкам 1 и 2 задаются как переменные в make-файле, а затем дается команда для копирования.Проблема в том, что даже после использования функции Wildcard я могу скопировать всю папку 1 в папку 2, а не содержимое папки1.Пожалуйста, помогите мне, предложив способ скопировать содержимое папки 1 в 2, а не всю папку.

Ниже приведен фрагмент кода, который я использовал изначально:
PATH_1 = /ace/1/*
PATH_2 = /ace/2/
Код для копирования: shell cp -rf ("$(PATH_1)") ("$(PATH_2)")
Просьба не возражать против вышеприведенной строки кода.

Основная проблема была в PATH_1, поскольку '*' не была решена должным образом, а содержимое не былоскопировано.После удаления '*' из PATH_1 код работал, но снова он скопировал всю папку 1 в папку 2.

Позже я изменил Path_1 следующим образом:
PATH_1 = /ace/1/(wildcard abc_*.c)

Тем не менееТо же самое, вся папка 1 копируется в папку 2. Пожалуйста, помогите мне с этим.

1 Ответ

0 голосов
/ 18 октября 2011

Попробуйте что-нибудь по этим строкам:

PATH1=/ace/1
PATH2=/ace/2
C_SRCS=$(wildcard $(PATH1)/abc_*.c)

copy:
     cp -vi ${C_SRCS} $(PATH2)

Параметры копирования v предназначены для подробного просмотра, а i для интерактивного, который можно игнорировать, если хотите.
Это правило не будет выполнено с ошибкой, если C_SRCS пусто, чтобы предотвратить появление в некоторых строках слегка надежного правила:

copy:
     for C_SRC in ${C_SRCS}; do \
         cp -vi $$C_SRC $(PATH2);  \
     done

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...