#command-line #makefile #mingw
#командная строка #makefile #mingw
Вопрос:
У меня запутанная проблема, связанная с mingw make и командной строкой Windows (Win7):
У меня есть makefile, который должен вызывать файл vbs для преобразования файлов .vds в файлы .png. вот код makefile (без определенных переменных, вы можете увидеть результат на рисунке ниже).
VSD2PNG: $(VISIO_OUTPUT)
@echo *** converting visio files to png files finished
define vsd_rule
$(1): $(call FILTER_FUNCTION,$(basename $(notdir $(1))),$(VISIO_FILES))
$(VSD_SCRIPT) $$< $(VISIO_OUTPUT_DIR)
endef
$(foreach file,$(VISIO_OUTPUT),$(eval $(call vsd_rule,$(file))))
приводит к
Как вы можете видеть, команда должна вызывать .tools visio convert(.vbs) с двумя аргументами (входной файл и выходной каталог). Удивительно то, что одна и та же команда, выполняемая в командной строке Windows, работает нормально. Я попробовал некоторые модификации для решения проблемы (безуспешно):
- добавление расширения файла в vbs-script приводит к ошибке 193, но я не могу выяснить, что это значит.
- вызов скрипта без каких-либо аргументов должен привести к ошибке времени выполнения в скрипте, но это снова приведет к ошибке-1 (или с расширением файла 193).
- использование абсолютного пути для скрипта
Кто-нибудь знает больше о различиях между вызовом скрипта непосредственно из командной строки или из makefile, который обычно должен приводить к командной строке?
Комментарии:
1. Что происходит, когда вы пытаетесь сделать что-то более простое?
2. Смотрите второй пункт списка: я пытался вызвать только скрипт vbs без каких-либо аргументов. Это должно привести к ошибке времени выполнения скрипта vbs, но этого не происходит. Поэтому я думаю, что он не может найти скрипт.
3. Я не знаком с MinGW, поэтому не могу сразу диагностировать проблему, но я могу предложить несколько экспериментов. Опубликуйте простейший makefile, который выдает ошибку. Попробуйте вызвать из правила скрипт, который на самом деле не существует, и посмотрите, выдает ли он ту же ошибку. Попробуйте вызвать a
HelloWorld
с тем же путем или реальный скрипт в рабочем каталоге.4. использование целевого объекта, содержащего только вызов функции, приводит к тем же проблемам. Вызов другой программы (.exe) приводит к нормальному поведению. Возможно ли, что вы не можете запустить скрипт .vbs из make?
5. Можете ли вы подготовить минимальный полный пример ?