LINUX.ORG.RU

Вопрос про make


0

0

В Makefile есть строка

targets: $(TARGETS)

То есть цель targets зависит от того, что в $(TARGETS), и никаких правил для сборки. В $(TARGETS) записаны те файлы, которые нужно получить, так как их в данный момент нет, то make их получит(для них есть правила). 
Однако, когда я запускаю make, она пишет, что для сборки targets "нет правил для сборки цели"( хотя они мне и не нужны: там ничего не нужно собирать). Я пробовал написать правило типа echo Hello!, но она пишет то же самое:(. 
Видимо, чего-то не понимаю в работе программы make. Кто знает, помогите...

Заранее всем спасибо...

Попробуй добавить чего-нить типа .phony targets. Подробности в манах.

С уважением -- Смоляное Чучелко

anonymous
()
Ответ на: комментарий от anonymous

По-моему, .PHONY:targets. Но может и без : покатит - не пробовал.

Цель targets, как я понял, абстрактная (такого файла не существует)

blacktiger
()
Ответ на: комментарий от anonymous

Да, файла targets не существует.
Версия для Linux:

[oleg@localhost oleg]$ make -v
GNU Make 3.80
Copyright (C) 2002  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

Makefile занеимает 29 КБ, ме его здесь не разместить...

Я приведу только этот отрывок. 

До него идут определения макросов...


build_debug:
	@-mkdir $(BUILD_DEBUG_DIR) \
		$(BUILD_DEBUG_DIR)/client \
		$(BUILD_DEBUG_DIR)/glclient \
		$(BUILD_DEBUG_DIR)/server 
	$(MAKE) targets BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)"

build_release:
	@-mkdir $(BUILD_RELEASE_DIR) \
		$(BUILD_RELEASE_DIR)/client \
		$(BUILD_RELEASE_DIR)/glclient \
		$(BUILD_RELEASE_DIR)/server
	$(MAKE) targets BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(RELEASE_CFLAGS)"

all: build_debug build_release

targets: $(TARGETS)

Далее описываеться от чего зависят цели в $(TARGETS) и правила для них..

cubric
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.