Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемы с makefile
Форум на CrossPlatform.RU > Разработка > С\С++
AD
Сейчас программирую в Linux. В качестве редактора использую Kate. Makefile создан вручную, а не с помощью IDE. Решил сделать более универсальный makefile, который берет исходники из папки src, объектники кладет в obj, бинарники в bin. На Habrahabr нашел подобное, слегка поправил для своих нужд. Но выдает ошибку на 32 строчку. Пишет MIssing separayor. Stop.
Помогите, пожалуйста, поправить ошибку. Прежде, чем приведу makefile. Объясню структуру. Файл проекта. В нем, в корне - makefile, затем src - исходники, где могут быть поддиректории. Балуюсь дома с таким вот, потому чисто тестовое все. Поддиректория M1

Итак - makefile:
root_source_dir := src
source_subdirs := .M1
compile_flags := -Wall -MD -pipe -std=c++0x -pedantic-errors
link_flags := -s -pipe
libraries := -ldl

relative_source_dirs   := $(addprefix ../$(root_source_dir)/, $(source_subdirs))
objects_dirs := $(addprefix $(root_source_dir)/, $(source_subdirs))
objects := $(patsubst ../%, %, $(wildcard $(addsuffix /*.c*, $(relative_source_dirs))))
objects := $(objects:.cpp=.o)

all : $(program_name)

$(program_name) : obj_dirs $(objects)
    g++ -o $@ $(objects) $(link_flags) $(libraries)

obj_dirs :
    mkdir -p $(objects_dirs)

VPATH := ../

%.o : %.cpp
    g++ -o $@ -c $< $(compile_flags) $(build_flags) #$(addprefix -I, $(relative_include_dirs))

.PHONY : clean

clean :
    rm -rf bin obj

include $(wildcard $(addsuffix /*.d, $(objects_dirs)))

mkdir -p bin
mkdir -p obj
mkdir -p obj/release
make --directory=./obj/release --makefile=../../Makefile build_flags="-OX -fomit-frame-pointer" program_name=../../bin/record
Iron Bug
скорее всего, просто отсутствует пустая строка в конце файла.
AD
Цитата(Iron Bug @ 5.2.2012, 11:52) *
скорее всего, просто отсутствует пустая строка в конце файла.

Да нет, есть она. Не помогает!!!
kuzulis
Вроде отступы для целей надо через TAB делать, а не через пробелы. У тебя табы?
yekka
похожее сообщение об ошибке видел, когда файл с зависимостями (.d) был битый, т.е. там где-то то ли слеша не хватало, то ли наоборот был лишний
Iron Bug
Цитата(AD @ 5.2.2012, 15:35) *
Да нет, есть она. Не помогает!!!

ну, значит точно проверяй табы и прочее. капризный он, make, к формату файла. достаточно сохранить его в каком-нить редакторе, который табы на пробелы меняет - и привет. я поэтому на bjam перешла и была рада :)
AD
Цитата(Iron Bug @ 5.2.2012, 16:45) *
Цитата(AD @ 5.2.2012, 15:35) *
Да нет, есть она. Не помогает!!!

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

Так блин, как раз на табы он сразу пишет корректное сообщение и я это поправил сразу. При выкладывании на форум могло автоматически замениться на пробелы, так что на это смотреть не надо. Это как раз makefile выдает корректное сообщение.
Tonal
Строека 32, это как раз где-то после
clean :
    rm -rf bin obj

Не оставляй пустые строки в правилах.
И отступы всяко через табы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.