使用SCons编译时找不到glm.hpp

时间:2013-10-19 16:00:33

标签: c++ scons

我正在尝试编译一个项目,但SCons找不到glm / glm.hpp ... 这是我的SConstruct:

VariantDir('build', '.')
env=Environment(CPPPATH=['.'], CPPDEFINES=[], LIBS=[], CXXFLAGS="-std=c++0x")
env.Program(target='exec_test', source=[Glob('build/*.cpp'), Glob('build/*.hpp')])

这是输出:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build
g++ -o build/game.o -c -std=c++0x -I. build/game.cpp
g++ -o build/main.o -c -std=c++0x -I. build/main.cpp
g++ -o exec_test build/game.o build/main.o build/game.hpp
build/game.hpp:15:23: fatal error: glm/glm.hpp: No such file or directory
 #include <glm/glm.hpp>
                       ^
compilation terminated.
scons: *** [exec_test] Error 1
scons: building terminated because of errors.

main.cpp,game.cpp和game.hpp在当前目录中,glm.hpp在glm / glm.hpp中(来自当前目录)

我做错了什么?

编辑:

我做了一些编辑,我意识到一个非常奇怪的事情:我只在game.hpp中得到错误!我还尝试删除glm include行,并且我收到警告,某些代码仅在c ++ 11中可用。这意味着没有任何scons构建参数用于game.hpp。我也尝试在main.cpp和game.cpp中包含glm,它编译时没有错误或警告。我认为不是关于game.hpp文件,而是关于scons没有使用SConstruct中的参数构建.hpp文件。

1 个答案:

答案 0 :(得分:1)

编译时,不应在源列表中包含头文件。请考虑将呼叫更改为Program(),如下所示:

env.Program(target='exec_test', source=[Glob('build/*.cpp')])