LINUX.ORG.RU

Makefile компиляция

 , ,


0

2

Не понимаю почему не удается скомпилировать все .с файлы в каталоге source. Терминал выдает ошибку «make: *** Нет правила для сборки цели «source/)», требуемой для «all_source». Останов.»

CC = gcc

DIR_SRC = ./source/
SRC_FILES = $(DIR_SRC)$(wildcard *.c))
COMPILE_SRC_FILES = $(CC) -c $(SRC_FILES)

all_source: $(SRC_FILES)
	$(COMPILE_SRC_FILES)



Последнее исправление: kennydzzze (всего исправлений: 2)
Ответ на: комментарий от xaizek

Спасибо за помощь. п.с. Не посоветуете статью где описан синтаксис cmake? Где не искал, везде функция wildcard использовалась отдельно на примерах. п.с.(2) Этот синтаксис применим к любым похожим функциям?

kennydzzze
() автор топика
Ответ на: комментарий от joy4eg

Мое непонимание оставляет свои плоды... Я думал cmake - это что-то вроде способа описания мейкфайла, грубо говоря - «язык». Меня интересует то, какие есть еще полезные функции для мейкфайлов, их разносторонний синтаксис в связках с несколькими переменными, в общем что-то вроде документации, но для новичка. И желательно на русском языке.

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

Все то, что я смог найти до этого - небольшие гайды, которые знакомят с основами простейших мейкфайлов.

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

Не посоветуете статью где описан синтаксис make?

Помимо документации есть толковая статья Эффективное использование GNU Make.

Этот синтаксис применим к любым похожим функциям?

Да, в аргументах можно подставлять любые другие функции и переменные.

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

лучше бы написали статью «Эффективное неиспользование GNU Make»

i_gnatenko_brain ★★★★
()

Возник новый вопрос: что сейчас не так?

CC = gcc

DIR_SRC = ./source
DIR_OBJ = ./object

SRC_FILES = $(wildcard $(DIR_SRC)/*.c)
OBJ_FILES = $(patsubst $(DIR_SRC)/%.c, $(DIR_OBJ)/%.o, $(SRC_FILES))

COMPILE_SRC_FILES_AND_CREATE_OBJ = $(CC) -c $(SRC_FILES) -o $(OBJ_FILES)


obj: $(SRC_FILES)
	$(COMPILE_SRC_FILES_AND_CREATE_OBJ)

В каталоге source 3 исполняемых файла, я хочу скомпилировать эти 3 файла и их объектные файлы засунуть в каталог object. В терминале вроде все компилируется и объектные файлы, судя по логу, должны были появится в каталоге object, но этого не происходит. Далее ссылаются ошибки на 2 объектных файла (странно, почему не на 3?), видимо самый первый скомпилировался удачно.

gcc -c ./source/export_to_file.c ./source/number_of_passwordsFunction.c ./source/default_optionsFunction.c -o  ./object/export_to_file.o  ./object/number_of_passwordsFunction.o  ./object/default_optionsFunction.o
gcc: error: ./object/number_of_passwordsFunction.o: Нет такого файла или каталога
gcc: error: ./object/default_optionsFunction.o: Нет такого файла или каталога
Makefile:15: ошибка выполнения рецепта для цели «obj»
make: *** [obj] Ошибка 1
[/cut]
kennydzzze
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.