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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2010, 21:49   #1
Kill-All-N-Thrash
Пользователь
 
Аватар для Kill-All-N-Thrash
 
Регистрация: 28.07.2010
Сообщений: 43
Стрелка makefile

Добрый вечер!
Заморочился сегодня, и собрал MSYS+MinGW+wxWidgets под мастдаем, пол дня проковырялся с этим, учитывая то, что вечно не хватало нужных dll, ведь поставил g++ 4.5... потом долго это дело тестил, вроде всё заработало!
Но вот строка компиляции хеллоуворлда под виджетс:
Код:
g++ main.cpp `wx-config --libs` `wx-config --cxxflags` -o hello.exe -enable-auto-import -static-libgcc -static-libstdc++
немного удавиться можно набирать, учитывая, что в консоли MSYS нет вставки из буфера обмена...
Вроде можно как-то это всё прописать в makefile и компилить с помошью make, но вот в интернете статьи все обрывочные, а полный рефёренс изучать займёт много времени. Можно пожалуйста пример мейкфайла для моего случая, а я уже потом доберу на этом примере и из оф. документации знаний
Kill-All-N-Thrash вне форума Ответить с цитированием
Старый 27.08.2010, 22:44   #2
sever-42
Пользователь
 
Регистрация: 22.04.2010
Сообщений: 96
По умолчанию

Я таким пользуюсь.
Код:
NAME_PROGRAMME = main 
HEADER = header.h # *.h 
OBJ = main.o # сюда все *.o
CC := g++ -o -Wall
CC += $(CC) -O2
CC_O := g++ -c

all: $(NAME_PROGRAMME) # цель: зависимость
$(NAME_PROGRAMME): $(OBJ)
	$(CC) $(OBJ) -o $(NAME_PROGRAMME)
#$(OBJ): $(HEADER)
run:
	~/tmp2/$(NAME_PROGRAMME)
clean:
	rm -f $(NAME_PROGRAMME) $(OBJ)
install:
	cp $(NAME_PROGRAMME) /usr/local/bin/$(NAME_PROGRAMME)
uninstall:
	rm -f /usr/local/bin/$(NAME_PROGRAMME)
make собрать под win надо $(CC) $(OBJ) -o $(NAME_PROGRAMME).exe
include <Qt>

Последний раз редактировалось sever-42; 27.08.2010 в 22:48.
sever-42 вне форума Ответить с цитированием
Старый 27.08.2010, 22:50   #3
Kill-All-N-Thrash
Пользователь
 
Аватар для Kill-All-N-Thrash
 
Регистрация: 28.07.2010
Сообщений: 43
По умолчанию

Спасибо! Буду парсить щас :D
Kill-All-N-Thrash вне форума Ответить с цитированием
Старый 29.08.2010, 13:41   #4
Kill-All-N-Thrash
Пользователь
 
Аватар для Kill-All-N-Thrash
 
Регистрация: 28.07.2010
Сообщений: 43
По умолчанию

Так, чё-то у меня не выходит, я свои параметры и в CC прописывал, и CFLAGS заводил - прописывал, а всё-равно вот эти:
Код:
`wx-config --libs` `wx-config --cxxflags` -enable-auto-import -static-libgcc -static-libstdc++
не попадают в результирующую строку компиляции... получается примерно следующее:
Код:
g++   -c -o main.o main.cpp
И линкер кричит...
Kill-All-N-Thrash вне форума Ответить с цитированием
Старый 29.08.2010, 16:08   #5
sever-42
Пользователь
 
Регистрация: 22.04.2010
Сообщений: 96
По умолчанию

Код:
CFLAG1 = `wx-config --libs` `wx-config --cxxflags`
CFLAG2 = -enable-auto-import -static-libgcc -static-libstdc++

main: main.o
	g++ main.cpp $(CFLAG1) -o main $(CFLAG2)
так не прокатывает?
Можно еще посмотреть makefile с какой нибудь IDE(Eclipse, NetBeanse), как они там это реализуют.
include <Qt>
sever-42 вне форума Ответить с цитированием
Старый 29.08.2010, 16:43   #6
Kill-All-N-Thrash
Пользователь
 
Аватар для Kill-All-N-Thrash
 
Регистрация: 28.07.2010
Сообщений: 43
По умолчанию

Цитата:
так не прокатывает?
Код:
$make
g++ -c -o main.o main.cpp
main.cpp:4:19: fatal error: wx/wx.h: no such file or directory
compilation terminated.
make *** [main.o] Error 1

Последний раз редактировалось Kill-All-N-Thrash; 29.08.2010 в 16:48.
Kill-All-N-Thrash вне форума Ответить с цитированием
Старый 29.08.2010, 17:35   #7
Kill-All-N-Thrash
Пользователь
 
Аватар для Kill-All-N-Thrash
 
Регистрация: 28.07.2010
Сообщений: 43
По умолчанию

Нашёл на сайте wxwidgets мейкфайлы)))
Пришлось их поковырять - наконец-то всё заработало!!!!
Вот что получилось:
Код:
CXX = $(shell wx-config --cxx)
PROGRAM = main
SOURCES = main.cpp
# wx-config --libs
WX_LIBS = $(shell wx-config --libs)
# wx-config --cxxflags
WX_CXXFLAGS = $(shell wx-config --cxxflags)

OBJECTS = $(PROGRAM).o

# implementation


all:	$(PROGRAM)

$(PROGRAM):$(OBJECTS)
	$(CXX) $(SOURCES) $(WX_LIBS) $(WX_CXXFLAGS)  -o $(PROGRAM)  -enable-auto-import -static-libgcc -static-libstdc++

Последний раз редактировалось Kill-All-N-Thrash; 29.08.2010 в 17:48.
Kill-All-N-Thrash вне форума Ответить с цитированием
Старый 29.08.2010, 17:55   #8
sever-42
Пользователь
 
Регистрация: 22.04.2010
Сообщений: 96
По умолчанию

Надо было заменить `` ключом shell
include <Qt>
sever-42 вне форума Ответить с цитированием
Старый 29.08.2010, 23:15   #9
Kill-All-N-Thrash
Пользователь
 
Аватар для Kill-All-N-Thrash
 
Регистрация: 28.07.2010
Сообщений: 43
По умолчанию

Даже не в этом дело было оказывается! Я повторил - не мейкалось - потом ударило в голову вместо
Код:
$(PROGRAM):$(OBJECTS)
написать:
Код:
$(PROGRAM):$(SOURCES)
И всё заработало - оно видимо не хотело компилить, а пыталось сразу собрать из main.o прогу. Походу так, поэтому и компиляющие параметры не передавались, а появлялся откуда ни возьмись -c
Kill-All-N-Thrash вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание makefile phpcreator Помощь студентам 0 18.05.2010 17:33
Makefile для сщздания проекта на Фортране Valter Помощь студентам 2 24.06.2009 10:04