【发布时间】:2012-02-29 11:46:16
【问题描述】:
我正在尝试在使用 openGL 和 SFML 的 Linux 上分发用 C++ 编写的小软件。我正在尝试为 sfml 库和头文件提供我的代码,以避免安装 sfml(将使用它的人没有 root 访问权限,但他们将安装所有 openGL 所需的东西)。
我的文件层次结构如下:
- lib/ >> 这里是所有 sfml 库(.so 文件)
- Makefile >> 稍后我会展示代码
- src/ >> 这里是程序和 sfml 源
- myfiles.h, myfiles.cpp >> 所有它们都可以使用安装在 /usr/lib 的 sfml 库进行编译和工作
- 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)
当我在 /usr/lib 中安装了 sfml 的 PC (Ubuntu 11.10) 上运行 make 时,一切顺利,如果我在没有安装它的 PC 上运行它,它会说:
...
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
我尝试制作#include "whatever/Window.hpp",更改 src/SFML 文件夹名称,而不是使用链接器上的 -I 选项,而是使用 src/SFML/Window .hpp(和其他 sfml 标头)包含像 #include 这样的行,所以我需要它们在我指定的路径上搜索。
我错过了什么吗?我想这是我的 Makefile 的错误,但我没有太多经验......
提前致谢!
【问题讨论】: