Я компилирую код C ++ для Webots (симулятора роботов) с помощью make-файлов, и я использую общий make-файл Makefile.include
, поставляемый Webots, чтобы упростить процесс.
Я создаю собственный make-файл, устанавливаю кучу требуемых переменных и затем вызываю этот make-файл, который устанавливает все необходимые правила для компиляции. Так оно и должно было работать.
Я получаю следующую ошибку:
make[1]: *** No rule to make target 'USER_PREBUILD'. Stop.
/usr/share/webots/resources/Makefile.include:503: recipe for target 'pre-build' failed
make: *** [pre-build] Error 2
И посмотрев на соответствующую строчку (от Makefile.include
):
$(SUPPORTED_TARGETS): post-build
USER_PREBUILD:
USER_POSTBUILD:
pre-build:
@$(MAKE) --silent USER_PREBUILD
post-build: main-build
@$(MAKE) --silent USER_POSTBUILD
$(TARGETS): pre-build
main-build: $(TARGETS)
Я не уверен, нет ли синтаксической ошибки при вызове make
в pre-build
и post-build
, или если USER_PREBUILD
и USER_POSTBUILD
должны быть конкретными файлами, но даже если заменить их на $(USER_PREBUILD)
, я получаю *** No targets specified and no makefile found
. Итак, я предполагаю, что мне нужно будет установить эти переменные перед вызовом внешнего make-файла, но каков именно синтаксис, если мне нечего делать перед сборкой?
Как ни странно, даже несмотря на эти ошибки, программа компилируется (я получаю * .o, * .d и двоичный файл в папке build
), но никогда не копирует двоичный файл в папку назначения.
make USER_POSTBUILD
. - person G. Allen Morris III   schedule 14.05.2015