Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Makefile -> patsubst


Автор: Rickert 27.9.2010, 03:45
Есть Makefile:
Цитата
PRJ_DEBUG_SCAN = $(wildcard $(ENGINE_LIBCOMMON_DIR)/*.cpp);
PRJ_DEBUG_SCAN2 = engine/libCommon/cpp/aaux.cpp engine/libCommon/cpp/alog.cpp engine/libCommon/cpp/amath.cpp engine/libCommon/cpp/astring.cpp engine/libCommon/cpp/avector.cpp
some:
        @echo $(PRJ_DEBUG_SCAN)
        @echo $(PRJ_DEBUG_SCAN2)
        @echo $(PRJ_DEBUG_SCAN:$(ENGINE_LIBCOMMON_DIR)/%.cpp=%)
        @echo $(PRJ_DEBUG_SCAN2:$(ENGINE_LIBCOMMON_DIR)/%.cpp=%)

На выходе получаю:
Цитата
engine/libCommon/cpp/aaux.cpp engine/libCommon/cpp/alog.cpp engine/libCommon/cpp/amath.cpp engine/libCommon/cpp/astring.cpp engine/libCommon/cpp/avector.cpp
engine/libCommon/cpp/aaux.cpp engine/libCommon/cpp/alog.cpp engine/libCommon/cpp/amath.cpp engine/libCommon/cpp/astring.cpp engine/libCommon/cpp/avector.cpp
aaux alog amath astring engine/libCommon/cpp/avector.cpp
aaux alog amath astring avector

Как вы можете видеть через wildcard я получаю пути до файлов и пытаюсь взять только имена файло без расширений. Но последний - игнорируется. При этом я формирую строку, без помощи wildcard'а - точно такую же: она распарсивается нормально.

При этом
Цитата
@echo $(patsubst $(ENGINE_LIBCOMMON_DIR)/%.cpp,%, $(wildcard $(ENGINE_LIBCOMMON_DIR)/*.cpp))

Всё нормально парсит.

Т.е. проблема имено в том варианте когда я результат wildcard'а присваиваю какой-то переменной.

Автор: Rickert 27.9.2010, 05:55
Вообще не понимаю в чём была трабла.
Рассосалась сама собой.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)