Я в значительной степени новичок в создании make-файлов, поэтому я даже не знаю терминологии, которую ищу. Я пытаюсь собрать последнюю версию valgrind вместе с другими сторонними инструментами, которые использует моя компания. У меня в основном
../3rdparty/
/Makefile <- What gets called to recursively build everything
/valgrind/Makefile <- What I'm pasting below
/valgrind/valgrind-3.16.1/Makefile <- what gets configure'd
, поэтому я могу go войти в ../3rdparty/valgrind/valgrind-3.16.0/ и позвонить ...
./configure --host=arm-linux-gnueabihf
make
... и добиться успеха без проблем. Однако, когда я пытаюсь собрать его из Makefile в ../3rdparty/valgrind, я получаю ошибки из-за потери сгенерированных конфигурацией переменных. Я вижу, как он все очищает, я вижу, что конфигурация прошла успешно, но когда начинается процесс make, я получаю предупреждения, которых не видно при использовании описанного выше процесса.
cc1: warning: switch -mcpu=cortex-a8 conflicts with -march=armv7ve switch
Что в конечном итоге приводит к ошибке
<command-line>:0:5: error: expected identifier or ‘(’ before numeric constant pub_core_basics.h:78:12: note: in expansion of macro ‘ARM’
Я в основном копирую, вставил то, что используется для других сторонних библиотек в нашу кодовую базу, и внес изменения там, где это применимо ....
include ../common.mak
VERSION=valgrind-3.16.1
all: configure build #install
configure: configure_$(TARGET)
configure_$(TARGET):
$(MAKE) distclean
@echo -e "\nConfiguring $(VERSION) for $(TARGET)...\n"
pushd $(VERSION)/ \
&& bash configure --host=${TARGET} \
&& popd
touch $@
@echo -e "\nConfiguration $(VERSION) complete for $(TARGET)...\n"
build: configure
$(MAKE) "-SC" $(VERSION)
install: build
$(MAKE) -SC $(VERSION) $@
# call folder's makefile targets verbatim
clean distclean:
test -f $(VERSION)/Makefile && $(MAKE) -SC $(VERSION) $@ || :
rm -f configure_*
uninstall:
$(MAKE) -SC $(VERSION) $@
Я предполагаю, что это одна строчка, но мне также были бы интересны любые документы или веб-сайты, которые были бы полезны. Множество руководств по make файлам go по тому же материалу super basi c.