Я пытаюсь распространять небольшое программное обеспечение, написанное на C ++ для Linux, которое использует openGL и SFML. Я пытаюсь обеспечить библиотеки и заголовки sfml своим кодом, чтобы избежать установки sfml (люди, которые будут использовать его, не имеют root-прав, но у них будут установлены все необходимые для openGL вещи).
Моя файловая иерархия выглядит следующим образом:
- lib / >> здесь идут все библиотеки sfml (.so файлы)
- Makefile >> позже я покажу код
- src / >> Вот исходники программ и sfml
- myfiles.h, myfiles.cpp >> все они компилируются и работают нормально с библиотеками sfml, установленными в / usr / lib
- SFML / >> здесь перечислены все заголовки sfml, есть несколько подпапок
Вот мой Makefile:
EJECUTABLE = app
MODULOS = src/main.o src/Handbapp.o src/Camera.o src/Light.o src/Scene.o src/Graphics.o src/Window.o src/Model.o src/Court.o src/Player.o src/Primitives.o src/Path.o
CC = g++
LIBDIR = ./lib
INCDIR = ./src
LIBS = -lsfml-window -lsfml-system -lGLU
LDFLAGS = -L$(LIBDIR) -I$(INCDIR)
CFLAGS = -v -Wl,-rpath,$(LIBDIR)
$(EJECUTABLE): clean $(MODULOS)
$(CC) $(CFLAGS) -o $(EJECUTABLE) $(LDFLAGS) $(MODULOS) $(LIBS)
rm -f $(MODULOS)
clean:
rm -f $(MODULOS) $(EJECUTABLE)
Когда я запускаю make на ПК (Ubuntu 11.10) с sfml, установленным в / usr / lib, все идет хорошо, если я делаю на том, на котором он не установлен, он говорит:
...
g++ -c -o src/main.o src/main.cpp
In file included from src/main.h:18:0,
from src/main.cpp:10:
src/Handbapp.h:17:44: fatal error: SFML/Window.hpp: File or directory doesn't exist
Compilation finished.
make: *** [src/main.o] Error 1
Вот фрагмент кода, показывающий включение в Handbapp.h:
...
#ifndef HANDBAPP_H
#define HANDBAPP_H
// Espacio de nombres
using namespace std;
// Librerias
#include <GL/gl.h> // OpenGL
#include <GL/glu.h> // Utilidades OpenGL
#include <SFML/Window.hpp> // Ventanas SFML <- LINE 17
#include <SFML/System.hpp> // SFML
Я пытался сделать # включающим "what / Window.hpp" , меняя имя папки src / SFML для чего угодно и не используя опцию -I на компоновщике, но src / SFML / Window. hpp (и другие заголовки sfml) имеют такие строки включения, как # include , поэтому мне нужно, чтобы они выполняли поиск по указанному мною пути.
Я что-то упустил? Я думаю, что это ошибка с моим Makefile, но у меня не так много опыта с этим ...
Заранее спасибо!