реклама на сайте
подробности

 
 
> многофаловый проект, Linux
TigerSHARC
сообщение Aug 25 2012, 18:37
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Волей судьбы в руки попал интереснейший проект в исходниках. Но в папке прсото *.c и *.h файлы. Известно, что автор собирал проект под Linux. Теперь ломаю голову как откомпилить всё в бинарный файл. Нашёл пример как использовать Makefile:

CODE
# Makefile for printup
printup: print_up.o main.o
gcc -o printup print_up.o main.o
print_up.o: print_up.c print_up.h
gcc -c print_up.c
main.o: main.c
gcc -c main.c
clean:
rm -f *.o
rm -f printup


но у меня в проекте около 150 *.c файлов и вписывать каждый в Makefile - утомительно(хотя если нет альтернатив то деваться некуда).

Вопрос: как собрать проект под Linux быстро? В Eclipse это сделать удобнее?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
_Артём_
сообщение Aug 25 2012, 19:06
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(TigerSHARC @ Aug 25 2012, 21:37) *
но у меня в проекте около 150 *.c файлов и вписывать каждый в Makefile - утомительно(хотя если нет альтернатив то деваться некуда).

Нужно добавлять не файле, а папки с файлами.
Из моего (скачанного в нете) makefile:
Цитата
# source directories (all *.c, *.cpp and *.S files included)
DIRS := $(SRCDIR)
DIRS += $(COMMON)
DIRS += $(PCBBIR)
# includes
INCS := $(patsubst %, -I "%", $(DIRS))

# individual source files
SRCS :=

#calc obj files list
OBJS := $(SRCS)
OBJS += $(wildcard $(addsuffix /*.cpp, $(DIRS)))
OBJS += $(wildcard $(addsuffix /*.c, $(DIRS)))
OBJS += $(wildcard $(addsuffix /*.S, $(DIRS)))
OBJS := $(notdir $(OBJS))
OBJS := $(OBJS:.cpp=.o)
OBJS := $(OBJS:.c=.o)
OBJS := $(OBJS:.S=.o)
OBJS := $(patsubst %, $(OBJDIR)/%, $(OBJS))
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Aug 26 2012, 07:17
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



если честно немного непонятно как им пользоваться... слишком много переменных. есть рабочий вариант?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 26 2012, 16:46
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Вот:
Код
    EXE     = program-name
    DIRS    := src
# includes
    INCS    := $(patsubst %, -I "%", $(DIRS))
#calc obj files list
    OBJS    := $(SRCS)
    OBJS    += $(wildcard $(addsuffix /*.c, $(DIRS)))
    OBJS    := $(notdir $(OBJS))
    OBJS    := $(OBJS:.c=.o)
$(EXE): $(OBJS)
    gcc $(OBJS) -o "$(EXE)"
VPATH := $(DIRS)
%.o: %.c
    gcc -c -o $@ $<

Соберёт все *.c файлы из папки src в программу с именем program-name.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016