У меня есть все свои исходные файлы в папке Source, make-файл находится в папке Makefile, и я хочу, чтобы все объектные файлы были помещены в папку Objects. Это - проект C, я продолжаю работать. Все эти три папки находятся в папке под названием Проект.
Папка проекта содержит: Исходные Объекты Make-файла
Я пытаюсь выяснить способ заставить make-файл компилировать источник от папки Source, я попытался использовать:
...
SOURCE_DIR=..\Source
OUTPUT_DIR=..\Objects
.c.obj:
$(CC) $(SOURCE_DIR)\$*.c /Fo$(OUTPUT_DIR)\$*.obj
...
но это не работает, я заканчиваю с сообщением об ошибке который, поскольку, в то время как говорит, не знают, как сделать myfile.obj
Попробуйте это:
SOURCE_DIR=..\Source
OUTPUT_DIR=..\Objects
{$(SOURCE_DIR)}.c{$(OUTPUT_DIR)}.obj:
$(CC) $* /Fo$<
Как здесь объяснено: http://msdn.microsoft.com/en-us/library/hk9ztb8x.aspx
Если в буквальном смысле слова не знают, как сделать myfile.obj
, а не не знают, как сделать ..\Objects\myfile.obj
, то ваша проблема где-то в другом месте - что-то в makefile запрашивает объектный файл в текущем каталоге.
Какое правило нужно собрать myfile.obj? Я бы догадался, что в этом правиле вы не можете указать $(OUTPUT_DIR)\myfile.obj
в качестве зависимости.