Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2010, 21:28   #1
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию Makefile: устранение ошибок

Здравствуйте. Решил написать кроссплатформенное приложение(Linux+Windows). Никогда не любил написание Makefile'ов, но всегда их написание происходило гладко. В этот раз столкнулся с несколькими проблемами. Для начала сам Makefile:
Код:
TEMP=$(shell dirname "`pwd`")
TARGET="../bin/$(shell basename "$(TEMP)")"

SOURCE_DIRS := .
SEARCH_WILDCARDS := $(addsuffix /*.cpp,$(SOURCE_DIRS)) 

SOURCES=$(wildcard $(SEARCH_WILDCARDS))
OBJECTS=$(SOURCES:%.cpp=%.o)

CXXFLAGS+=$(shell pkg-config --cflags OGRE)
LDFLAGS+=$(shell pkg-config --libs OGRE)

ifdef platform
	ifeq ($(platform),windows)
		TARGET_PLATFORM = i686-pc-mingw32
		CXX = $(TARGET_PLATFORM)-g++
		CC = $(TARGET_PLATFORM)-gcc
		CFLAGS=-Os -pipe -fomit-frame-pointer -I/usr/$(TARGET_PLATFORM)/usr/include/ -I/usr/$(TARGET_PLATFORM)/include/
		CXXFLAGS=${CFLAGS}
		LDFLAGS=-L/usr/$(TARGET_PLATFORM)/lib -L/usr/$(TARGET_PLATFORM)/usr/lib
		
		OGRE_HOME = /home/russian-stalker/OgreSDK_mingw_v1-7-2
		CXXFLAGS += -I$(OGRE_HOME)/include/OGRE -I$(OGRE_HOME)/boost_1_44
		LDFLAGS += -L$(OGRE_HOME)/lib/release -lOgreMain
		TARGET:=$(TARGET).exe
	endif
endif

all: $(TARGET)

$(OBJECTS): $(SOURCES)

$(TARGET): $(OBJECTS)
	$(CXX) -o $(TARGET) $(LDFLAGS) $(OBJECTS) $(LOADLIBES) $(LDLIBS)

clean:
	$(RM) $(OBJECTS) "$(TARGET)"

release: all
	$(RM) $(OBJECTS)

.PHONY: all clean release
Должен он собирать так:
make all - сборка под linux
make release - сборка с удаление временных файлов
make clean - удаление временных и исполняемых файлов
make правило platform=windows - сборка под windows.
Не говорите, что Makefile составлен безграмотно, я знаю, но мне так удобнее.
В общем, у меня две проблемы:
1) Цель собирается 2 раза. То есть:
Код:
russian-stalker@localhost ~/Projects/My Project/src $ make release
g++ -I/usr/include/OGRE     -c -o main.o main.cpp
g++ -o "../bin/My Project" -lOgreMain   ./main.o  
g++ -o "../bin/My Project" -lOgreMain   ./main.o  --Здесь собирается второй раз, хотя в первый раз удачно собралось.
rm -f ./main.o
В чем ошибка - не вижу в упор.
2) Статически не линкуется библиотека libstdc++-6.dll. Перепробовал множество ключей, но:
Код:
russian-stalker@localhost ~/Projects/My Project/src $ wine ../bin/My\ Project.exe 
err:module:import_dll Library libstdc++-6.dll (which is needed by L"Z:\\home\\russian-stalker\\Projects\\My Project\\bin\\My Project.exe") not found
err:module:LdrInitializeThunk Main exe initialization for L"Z:\\home\\russian-stalker\\Projects\\My Project\\bin\\My Project.exe" failed, status c0000135
Заранее благодарен
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 27.12.2010, 15:08   #2
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Извиняюсь. Вчера долго долбил ключи, сегодня без надежды уже запустил make с ключами "-static-libstdc++ -static-libgcc"(их я вчера по несколько раз пробовал) и вуаля, все работает. Осталась лишь одна проблема, компилирование цели два раза.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Makefile Nostalgia Общие вопросы C/C++ 3 18.10.2010 14:36
makefile Kill-All-N-Thrash Общие вопросы C/C++ 8 29.08.2010 23:15
Создание makefile phpcreator Помощь студентам 0 18.05.2010 17:33
Makefile для сщздания проекта на Фортране Valter Помощь студентам 2 24.06.2009 10:04
Delphi 2006 - устранение неполадок! Killer_djon Софт 1 04.05.2007 22:10