LINUX.ORG.RU

Makefile: Вопрос к знатокам


0

1

Имеется две проблемы:
1) С SDL работает только если подключать #include <SDL/SDL.h>, но нужно чтобы подключалось «#include <SDL.h>» или «#include „SDL.h“». Что нужно изменить?
2) как заменить строку «SRC = main.cpp sdl.cpp opengl.cpp» на что-то типа «SRC = *.cpp», ибо много cpp файлов, неудобно все перечислять

Makefile:
#---------------------------------------
TARGET = TowerDefence
LIBS = `sdl-config --libs` \
$(LIBS.extra) -L/usr/lib -lSDL -lSDL_image -lSDLmain -lSDL_mixer -lSDL_ttf -lGL -lGLU
# -Wall -pedantic
# -pedantic-errors
# -Xlinker -zmuldefs
CFLAGS = `sdl-config --cflags`
CC = g++ -O3

SRC = main.cpp sdl.cpp opengl.cpp
OBJ := $(SRC:.cpp=.o)

all: $(OBJ)
   $(CC) -o $(TARGET) $(LIBS) $(OBJ)
   strip $(TARGET)

clean:
   rm -f *.o *.txt $(TARGET) core
#---------------------------------------

★★

подключать #include <SDL/SDL.h>,

но нужно чтобы подключалось «#include <SDL.h>»

Можно ln -s /usr/include/SDL/SDL.h /usr/include/SDL.h

Но зачем?

«#include „SDL.h“»

А так зачем?

Но так тоже можно:

ln -s /usr/include/SDL/SDL.h ./SDL.h

babusha
()

>2) как заменить строку «SRC = main.cpp sdl.cpp opengl.cpp» на что-то типа «SRC = *.cpp», ибо много cpp файлов, неудобно все перечислять

Ъ перечисляют все. Это не напряг один раз слово в файл дописать.

anonymous
()
Ответ на: комментарий от babusha

> Но зачем?
Под Windows компилирую, а там «#include <SDL.h>» надо, использовать #ifdef WIN32 не хочу, не красиво.

«#include „SDL.h“»

А так зачем?

для компиляции http://clintbellanger.net/rpg/ нужно, часто так встречаю, а переделывать каждую ревизию не хочу.

Можно ln -s /usr/include/SDL/SDL.h /usr/include/SDL.h

где это вставить?

eReSik ★★
() автор топика
Ответ на: комментарий от anonymous

> Ъ перечисляют все. Это не напряг один раз слово в файл дописать.
ну так можно будет одним Makefile-ом пользоваться для многих проектов, удобней шаблон будет

eReSik ★★
() автор топика

А разве pkg-config --cflags SDL не хватит?

Eddy_Em ☆☆☆☆☆
()

> 1) С SDL работает только если подключать #include <SDL/SDL.h>, но нужно чтобы подключалось «#include <SDL.h>» или «#include „SDL.h“». Что нужно изменить?

«CFLAGS += -I/usr/include/SDL», или где он у тебя находится... мне под слакой достаточно «CFLAGS += $(shell sdl-config --cflags)» или «CFLAGS += $(shell pkg-config --cflags sdl)».

> 2) как заменить строку «SRC = main.cpp sdl.cpp opengl.cpp» на что-то типа «SRC = *.cpp», ибо много cpp файлов, неудобно все перечислять

SRC := $(wildcard *.cpp)

arsi ★★★★★
()
Ответ на: комментарий от arsi

> SRC := $(wildcard *.cpp)
помогло :) спасибо

«CFLAGS += -I/usr/include/SDL», или где он у тебя находится... мне под слакой достаточно «CFLAGS += $(shell sdl-config --cflags)» или «CFLAGS += $(shell pkg-config --cflags sdl)».


тут не разобрался :(

eReSik ★★
() автор топика
Ответ на: комментарий от eReSik

> тут не разобрался :(

что выдают запущенные с консоли следующие команды?

sdl-config --cflags

pkg-config --cflags sdl

find /usr/include -name SDL.h
arsi ★★★★★
()
-$(LIBS.extra) -L/usr/lib -lSDL -lSDL_image -lSDLmain -lSDL_mixer -lSDL_ttf -lGL -lGLU
+$(LIBS.extra) -L/usr/lib -lSDL -lSDL_image -lSDLmain -lSDL_mixer -lSDL_ttf -lGL -lGLU -I/usr/include/SDL 
nanoo_linux
()
Ответ на: комментарий от arsi

ln -s /usr/include/SDL/SDL.h /usr/include/SDL.h

ln -s /usr/include/SDL/SDL.h ./SDL.h

я за расстрел.

пожалуй плюсану.

nanoo_linux
()
Ответ на: комментарий от arsi

> что выдают запущенные с консоли следующие команды?

eres@eres-laptop:~/Desktop/diablo/0.11-2$ sdl-config --cflags
-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT

eres@eres-laptop:~/Desktop/diablo/0.11-2$ pkg-config --cflags sdl
-D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/SDL

eres@eres-laptop:~/Desktop/diablo/0.11-2$ find /usr/include -name SDL.h
/usr/include/SDL/SDL.h

eReSik ★★
() автор топика
Ответ на: комментарий от eReSik

и на третий день зоркий сокол заметил...

к строке

> $(CC) -o $(TARGET) $(LIBS) $(OBJ)

рекомендую таки добавить $(CFLAGS) :)

и вообще...

all: $(TARGET)


$(TARGET): $(OBJ)
	$(CC) -o $@ $(CFLAGS) $(LIBS) $^ && \
	strip $@
arsi ★★★★★
()
Ответ на: комментарий от eReSik

примерно так, не проверял. но желательно собирать сорцы с автозависимостями, примерно как в этом треде.

arsi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.