Ich versuche, eine kleine, in C++ geschriebene Software unter Linux zu vertreiben, die openGL und SFML verwendet. Ich versuche, die SFML-Bibliotheken und -Header mit meinem Code zur Verfügung zu stellen, um die Installation von SFML zu vermeiden (die Benutzer haben keinen Root-Zugang, aber sie haben alle für OpenGL erforderlichen Dinge installiert).
Meine Dateihierarchie sieht folgendermaßen aus:
- lib/ >> hier kommen alle sfml-Bibliotheken (.so-Dateien)
- Makefile >> später zeige ich den Code
- src/ >> Hier geht es zu den Programm- und sfml-Quellen
- myfiles.h, myfiles.cpp >> alle kompilieren und funktionieren problemlos mit den sfml-Bibliotheken, die unter /usr/lib installiert sind
- SFML/ >> hier kommen alle SFML-Header hin, hat einige Unterordner
Hier ist mein 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)
Wenn ich make auf einem PC (Ubuntu 11.10) ausführe, auf dem sfml in /usr/lib installiert ist, geht alles gut, wenn ich es auf einem PC ausführe, auf dem es nicht installiert ist, sagt es:
...
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
Das folgende Codestück zeigt das Include von 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
Ich habe versucht, die #include "whatever/Window.hpp" ,den src/SFML-Ordnernamen für was auch immer zu ändern und die Option -I des Linkers nicht zu verwenden, aber src/SFML/Window.hpp (und andere sfml-Header) haben include-Zeilen wie diese #include < SFML/Window/Whatever.hpp > Ich brauche sie also für die Suche in dem von mir angegebenen Pfad.
Habe ich etwas verpasst? Ich vermute, es ist ein Fehler in meinem Makefile, aber ich habe nicht so viel Erfahrung damit...
Vielen Dank im Voraus!