尽管传递了绝对地址,但g ++无法找到包含目录

时间:2011-10-05 14:40:14

标签: ubuntu include g++ cygwin

我正在研究一些C ++代码,其中包括使用tinyXML进行一些小型XML解析。因为我知道Python而不是make,我正在使用scons并获得以下scons输出:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o Release-cygwin/SDLWin.o -c -ISDLWin -I/cygdrive/d/Jason/Projects/Libraries/tinyxml/2.6.2/
 -I/cygdrive/d/Jason/Projects/Libraries/boost-1.47.0/boost_1_47_0/
 -I/cygdrive/d/Jason/Projects/Libraries/sdl/1.2.14/include SDLWin/SDLWin.cpp
SDLWin/SDLWin.cpp:36:21: fatal error: tinyxml.h: No such file or directory
compilation terminated.
scons: *** [Release-cygwin/SDLWin.o] Error 1
scons: building terminated because of errors.

我检查了路径,他们没事。这个项目使用VS2010使用相同的包含路径构建得很好(因为它们没有以/ cygdrive开头!)

有问题的LOC只是

#include "tinyxml.h"

我尝试使用类似DOS的路径规范而不是cygwin,但是产生了wierd包含路径。我在这个错误上看到的所有评论表明路径被搞砸了或没有设置或者其他东西,但是我使用VS包含的相同包含文件的绝对路径,所以不确定发生了什么。

TIA, -J

编辑:我现在有一个Ubuntu 11(64位)虚拟机,并试图使用scons构建代码导致同样的问题。

2 个答案:

答案 0 :(得分:0)

根据man page,Win32上的scons更喜欢使用MinGW工具链。它甚至可能不知道如何找到Cygwin g++命令。 (你安装了MinGW吗?)

如果我没记错的话,MinGW使用的是MSYS,它与Cygwin有一些相似之处但是(故意)能力差得多。特别是,我认为MSYS将D:\ Windows驱动器称为/D,而不是/cygdrive/D

调整SConscript文件(和源代码,如有必要)以与MinGW兼容,或者弄清楚如何使scons调用Cygwin gcc工具链。

答案 1 :(得分:0)

问题不是cygwin,python,ubuntu或gcc。我从顶级目录调用scons,但是它在目录级别遍历代码和SConscript文件......这意味着传递路径时路径不正确。实际的-I路径是相同的,但添加了额外的" ../"在我用来设置提升路径等环境变量的前面,意味着它有效。