Задать вопрос

Как сделать разные цели в одном makefile?

У меня есть makefile, который выглядит вот так:
all:  ud-button ud-rpl_root
PROJECT_SOURCEFILES += ud-dag_node.c 
DEFINES+=PROJECT_CONF_H=\"project-conf.h\"
CONTIKI = ../..
CONTIKI_WITH_IPV6 = 1
include $(CONTIKI)/Makefile.include

Если это важно, как выглядит makefile.include можно посмотреть тут: https://github.com/contiki-os/contiki/blob/master/...

Мне надо переписать его таким образом, чтобы его выполнение было аналогично выполнению двух разных makefile:
all: ud-button
PROJECT_SOURCEFILES += ud-dag_node.c 
DEFINES+=PROJECT_CONF_H=\"ud-button.project-conf.h\"
CONTIKI = ../..
CONTIKI_WITH_IPV6 = 1
include $(CONTIKI)/Makefile.include


all: ud-rpl_root
PROJECT_SOURCEFILES += 
DEFINES+=PROJECT_CONF_H=\"ud-rpl_root.project-conf.h\"
CONTIKI = ../..
CONTIKI_WITH_IPV6 = 1
include $(CONTIKI)/Makefile.include


Т.е. различные DEFINES и PROJECT_SOURCEFILES для каждого проекта. Подскажите, как сделать?

UPD: смог сделать только так, чтобы в зависимости от переменной подключались разные project-conf.h. Добавил в Makefile:
ifndef VARIANT
  ${info Not VARIANT defines! Set default: normal}
  VARIANT = normal
endif
PROJECTDIRS += $(VARIANT)


в project-conf.h добавил #include "target-conf.h", а в папках "normal" и "leaf" поместил разные target-conf.h.
Теперь, если сделать "make -j5 TARGET=unwired BOARD=udboards/cc26xx VARIANT=leaf", то универсальная часть возьмется из project-conf.h, а изменяемая часть из leaf/target-conf.h.
Проблема в том, что при таком подходе с одинаковым конфигом собираются оба проекта(ud-button и ud-rpl_root), а мне надо, чтобы для ud-button дефайны брались из project-conf.h + leaf/target-conf.h, а для ud-rpl_root из project-conf.h + standart/target-conf.h
  • Вопрос задан
  • 679 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@res2001
Developer, ex-admin
Ну и сделайте так:
ud-button:
PROJECT_SOURCEFILES += ud-dag_node.c 
DEFINES+=PROJECT_CONF_H=\"ud-button.project-conf.h\"
CONTIKI = ../..
CONTIKI_WITH_IPV6 = 1
include $(CONTIKI)/Makefile.include

ud-rpl_root:
PROJECT_SOURCEFILES += 
DEFINES+=PROJECT_CONF_H=\"ud-rpl_root.project-conf.h\"
CONTIKI = ../..
CONTIKI_WITH_IPV6 = 1
include $(CONTIKI)/Makefile.include

make запускать соответственно:
make ud-rpl_root
или
make ud-button

А для цели all можно написать так:
all: ud-button ud-rpl_root
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы