Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Makefile и не измененные файлы, Makefile и не измененные файлы 
V
    Опции темы
AndryuhaT
Дата 19.4.2012, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 2.12.2007

Репутация: нет
Всего: нет



всем привет! помогите с makefile'ом, пжлста. как заставить make компилировать только измененные файлы?
Код

ROOT_DIR= ..
SRC_DIR= .
BUILD_TYPE= Release
BUILD_DIR= $(ROOT_DIR)/$(BUILD_TYPE)
O_DIR= $(BUILD_DIR)/obj

TARGETS= ftp_auto_backup sftp_auto_backup

CXX= g++
CXXFLAGS= -DBOOST_THREAD_USE_LIB -O3 -Wall -fmessage-length=0
FTP_LDFLAGS= -static-libstdc++ -static-libgcc -s -L $(ROOT_DIR)/lib/Release -l:libboost_thread-mgw46-mt-1_49.a -l:libcommon.a \
    -l:libfile.a -l:libfilesearcher.a -l:libftpclient.a -l:libftplib.a -l:libdbclient.a -l:libsqlite3.a -l:libscheduler.a -l:libws2_32.a
SFTP_LDFLAGS= -static-libstdc++ -static-libgcc -s -L $(ROOT_DIR)/lib/Release -l:libboost_thread-mgw46-mt-1_49.a -l:libcommon.a \
    -l:libfile.a -l:libfilesearcher.a -l:libdbclient.a -l:libsqlite3.a -l:libscheduler.a -l:libsftpclient.a -l:libws2_32.a -l:libssh.dll

OBJECTS= appconfig.o backuplauncher.o clientbackup.o main.o
LD_OBJECTS= $(addprefix $(O_DIR)/,$(OBJECTS))

all: init $(TARGETS)

debug: CXXFLAGS= -O0 -g3 -Wall -fmessage-length=0
debug: BUILD_TYPE= Debug
debug: all

init:
    @mkdir -p $(BUILD_DIR)
    @mkdir -p $(O_DIR)

ftp_auto_backup: set_type_ftp $(OBJECTS) 
    $(CXX) -o $(LIB_DIR)/$@.exe $(LD_OBJECTS) $(FTP_LDFLAGS)

sftp_auto_backup: set_type_sftp $(OBJECTS)
    $(CXX) -o $(LIB_DIR)/$@.exe $(LD_OBJECTS) $(SFTP_LDFLAGS)

set_type_ftp:
    $(eval CXXFLAGS+=-DPROJECT_TYPE=FTP)
    
set_type_sftp:
    $(eval CXXFLAGS+=-DPROJECT_TYPE=SFTP)

%.o: $(SRC_DIR)/%.cpp
    $(CXX) -c $(CXXFLAGS) $< -o $(O_DIR)/$@

clean:
    rm -rf $(addprefix $(ROOT_DIR)/Release/obj/,$(OBJECTS)) $(addprefix $(ROOT_DIR)/Debug/obj/,$(OBJECTS))
    rm -rf $(addprefix $(ROOT_DIR)/Release/,$(addsuffix .exe,$(TARGETS))) $(addprefix $(ROOT_DIR)/Debug/,$(addsuffix .exe,$(TARGETS)))


PM MAIL   Вверх
boostcoder
Дата 19.4.2012, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 2
Всего: 110



PM WWW   Вверх
AndryuhaT
Дата 19.4.2012, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 2.12.2007

Репутация: нет
Всего: нет



Цитата(boostcoder @ 19.4.2012,  21:08)
RTFM: http://linux.yaroslavl.ru/docs/prog/gnu_ma...nual.html#SEC43

ага, спс, но я уже сам нашел http://www.gnu.org/software/make/manual/ma...c-Prerequisites


Это сообщение отредактировал(а) AndryuhaT - 20.4.2012, 00:32
PM MAIL   Вверх
AndryuhaT
Дата 20.4.2012, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 2.12.2007

Репутация: нет
Всего: нет



boostcoder, как оказалось, приведенная выше ссылка ваще не в тему! "спасибо" за RTFM, но перед тем как постить ответ можно глянуть хоть краем глаза на код.

Это сообщение отредактировал(а) AndryuhaT - 20.4.2012, 00:33
PM MAIL   Вверх
boostcoder
Дата 20.4.2012, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 2
Всего: 110



Цитата(AndryuhaT @  20.4.2012,  00:33 Найти цитируемый пост)
оказалось, приведенная выше ссылка ваще не в тему

оказалось, что вам удалось заставить обрабатываться список зависимостей, не генерируя список зависимостей! да вы "гений"! "удачи"!

PM WWW   Вверх
AndryuhaT
Дата 20.4.2012, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 2.12.2007

Репутация: нет
Всего: нет



Цитата(boostcoder @ 20.4.2012,  00:14)
Цитата(AndryuhaT @  20.4.2012,  00:33 Найти цитируемый пост)
оказалось, приведенная выше ссылка ваще не в тему

оказалось, что вам удалось заставить обрабатываться список зависимостей, не генерируя список зависимостей! да вы "гений"! "удачи"!

эх, еще раз, "мистер всезнайка",  причем здесь приведенная выше ссылка конкретно к моему примеру?

о, "взаимно"!)

Это сообщение отредактировал(а) AndryuhaT - 20.4.2012, 01:44
PM MAIL   Вверх
boostcoder
Дата 20.4.2012, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 2
Всего: 110



попробуйте прочтите мой первый пост. глядишь - поможет.
PM WWW   Вверх
AndryuhaT
Дата 20.4.2012, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 2.12.2007

Репутация: нет
Всего: нет



Цитата(boostcoder @ 20.4.2012,  00:43)
попробуйте прочтите мой первый пост. глядишь - поможет.

еще раз - проблема была не в этом. но спасибо, что есть люди, которые действительно помогают решить траблу, а не строят из себя бог знает что..
PM MAIL   Вверх
AndryuhaT
Дата 20.4.2012, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 2.12.2007

Репутация: нет
Всего: нет



boostcoder, поворчали и проехали ок?

кто что может сказать теперь по поводу следующей проблемы. итак имеется поправленный makefile:
Код

ROOT_DIR= ..
BUILD_TYPE= Release
BUILD_DIR= $(ROOT_DIR)/$(BUILD_TYPE)
O_DIR= $(BUILD_DIR)/obj

TARGETS= ftp_auto_backup sftp_auto_backup

CXX= g++
CXXFLAGS= -DBOOST_THREAD_USE_LIB -O3 -Wall -fmessage-length=0
FTP_LDFLAGS= -static-libstdc++ -static-libgcc -s -L $(ROOT_DIR)/lib/Release -l:libboost_thread-mgw46-mt-1_49.a -l:libcommon.a \
    -l:libfile.a -l:libfilesearcher.a -l:libftpclient.a -l:libftplib.a -l:libdbclient.a -l:libsqlite3.a -l:libscheduler.a -l:libws2_32.a
SFTP_LDFLAGS= -static-libstdc++ -static-libgcc -s -L $(ROOT_DIR)/lib/Release -l:libboost_thread-mgw46-mt-1_49.a -l:libcommon.a \
    -l:libfile.a -l:libfilesearcher.a -l:libdbclient.a -l:libsqlite3.a -l:libscheduler.a -l:libsftpclient.a -l:libws2_32.a -l:libssh.dll

OBJECTS= $(O_DIR)/appconfig.o $(O_DIR)/backuplauncher.o $(O_DIR)/clientbackup.o $(O_DIR)/main.o

all: init $(TARGETS)

debug: CXXFLAGS= -O0 -g3 -Wall -fmessage-length=0
debug: BUILD_TYPE= Debug
debug: all

init:
    @mkdir -p $(BUILD_DIR)
    @mkdir -p $(O_DIR)

ftp_auto_backup: set_type_ftp $(OBJECTS) 
    $(CXX) -o $(BUILD_DIR)/$@.exe $(OBJECTS) $(FTP_LDFLAGS)

sftp_auto_backup: set_type_sftp $(OBJECTS)
    $(CXX) -o $(BUILD_DIR)/$@.exe $(OBJECTS) $(SFTP_LDFLAGS)

set_type_ftp:
    $(eval CXXFLAGS+=-DPROJECT_TYPE=FTP)
    
set_type_sftp:
    $(eval CXXFLAGS+=-DPROJECT_TYPE=SFTP)

$(O_DIR)/%.o: %.cpp
    $(CXX) -c $(CXXFLAGS) $< -o $@

clean:
    rm -rf $(addprefix $(ROOT_DIR)/Release/,$(OBJECTS)) $(addprefix $(ROOT_DIR)/Debug/,$(OBJECTS))
    rm -rf $(addprefix $(ROOT_DIR)/Release/,$(addsuffix .exe,$(TARGETS))) $(addprefix $(ROOT_DIR)/Debug/,$(addsuffix .exe,$(TARGETS)))



собственно в чем проблема: когда `make' вызывается с дефолтной целью, то все ок. но когда я вызываю `make debug', то implicit rule вызывается для BUILD_TYPE= Release. нагуглилось вот что: Bug in GNU make: target-specific variables are not expanded in implicit rules?. как красиво прикрутить решение к моему файлу подскажите, пжлста.

Добавлено через 11 минут и 28 секунд
всем спасибо, все решил.

Добавлено через 14 минут и 23 секунды
сам с собой блин поговорил  smile 

Это сообщение отредактировал(а) AndryuhaT - 20.4.2012, 02:17
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | GNU toolchain | Следующая тема »


 




[ Время генерации скрипта: 0.1255 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.