crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Проблемы с makefile
AD
  опции профиля:
сообщение 4.2.2012, 23:14
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Сейчас программирую в 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
  опции профиля:
сообщение 5.2.2012, 10:52
Сообщение #2


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


скорее всего, просто отсутствует пустая строка в конце файла.

Сообщение отредактировал Iron Bug - 5.2.2012, 10:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 5.2.2012, 12:35
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Iron Bug @ 5.2.2012, 11:52) *
скорее всего, просто отсутствует пустая строка в конце файла.

Да нет, есть она. Не помогает!!!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 5.2.2012, 12:54
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 393
Регистрация: 29.6.2009
Пользователь №: 862

Спасибо сказали: 36 раз(а)




Репутация:   7  


Вроде отступы для целей надо через TAB делать, а не через пробелы. У тебя табы?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
yekka
  опции профиля:
сообщение 5.2.2012, 14:59
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 4.2.2012
Пользователь №: 3197

Спасибо сказали: 0 раз(а)




Репутация:   0  


похожее сообщение об ошибке видел, когда файл с зависимостями (.d) был битый, т.е. там где-то то ли слеша не хватало, то ли наоборот был лишний
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 5.2.2012, 15:45
Сообщение #6


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Цитата(AD @ 5.2.2012, 15:35) *
Да нет, есть она. Не помогает!!!

ну, значит точно проверяй табы и прочее. капризный он, make, к формату файла. достаточно сохранить его в каком-нить редакторе, который табы на пробелы меняет - и привет. я поэтому на bjam перешла и была рада :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 5.2.2012, 21:43
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Iron Bug @ 5.2.2012, 16:45) *
Цитата(AD @ 5.2.2012, 15:35) *
Да нет, есть она. Не помогает!!!

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

Так блин, как раз на табы он сразу пишет корректное сообщение и я это поправил сразу. При выкладывании на форум могло автоматически замениться на пробелы, так что на это смотреть не надо. Это как раз makefile выдает корректное сообщение.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 6.2.2012, 11:08
Сообщение #8


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Строека 32, это как раз где-то после
clean :
    rm -rf bin obj

Не оставляй пустые строки в правилах.
И отступы всяко через табы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.4.2024, 9:03