2015-12-18 2 views
1

Я работаю над make-файлом на OS X, и у меня возникают проблемы. Я сделал все, как должен (я думаю), но только часть его работает. Когда я пытаюсь:Проблемы с Makefile на Mac OS X: не найдено цели

make file1 

или:

make file2 

все кажется нормально, но когда я пытаюсь:

make all 

или:

make clean 

я типичный:

*** No rule to make target 

Вот код, я надеюсь, что вы можете определить вопрос (ы):

CC = gcc 
CFLAGS=-Wall 
FILES=file1 file2 

all: $(FILES) 

file1: file1.c 
    $(CC) $(CFLAGS) file1.c -o file1 

file2: file2.c 
    $(CC) $(CFLAGS) file2.c -o file2 

clean: 
    $(RM) $(FILES) 

Ура!

+1

Нет очевидной причины, по которой показанный синтаксис может вызвать эту проблему, поэтому я подозреваю, что 'make file1' работает без какого-либо make-файла и придумывает правило по умолчанию для компиляции (и, вероятно, не использует' Wall' при компиляции). Как называется созданный файл makefile? –

+0

makefile называется makefile, и вы действительно правы: '-Wall' не используется (я только что заметил) – TanguyH

+1

Это любопытно.Посмотрите на имя: 'ls m * | od -c'. Посмотрите, есть ли буквы, которые вы ожидаете, и нет конца в конце имени или чего-то такого неприятного. Но наблюдение «no' -Wall »практически подтверждает, что проблема связана с именем« makefile », хотя пока неясно, почему он не работает. Вы можете попробовать «make -f makefile all» и посмотреть, не имеет значения. –

ответ

0

Передача комментариев в ответ, главным образом, поэтому вопрос может быть закрыт.

Там нет очевидных причин, почему синтаксис показали бы вызвать эту проблему, так что я подозреваю, что make file1 работает без каких-либо Makefile и придумывают правила по умолчанию, чтобы сделать компиляцию (и, вероятно, не использовать опцию -Wall при компиляции).

Какое имя созданного вами файла makefile?

Makefile, называется makefile, и вы действительно правы: -Wall не используется (я только заметил).

Это любопытно. Присмотритесь к названию: ls m* | od -c. Посмотрите, есть ли буквы, которые вы ожидаете, и нет конца в конце имени или чего-то такого неприятного.

Но наблюдение «no -Wall» практически подтверждает, что проблема связана с именем makefile, хотя пока неясно, почему он не работает. Вы можете попробовать make -f makefile all и посмотреть, не имеет значения. Если имя неверно, вам следует сообщить, что он не может открыть makefile.

Я попытался переделать makefile с нуля, содержащий точно такую ​​же информацию, и он работает плавно. Вы определенно были правы в вопросе имени.

Такая проблема странная и запутанная - было разумно получить помощь.