C ++使用Poco Library进行编译错误 - 包含空格的路径名

时间:2011-04-17 19:55:19

标签: c++ unix escaping makefile poco

我正在尝试构建/安装/使用Poco C ++库。我正在经营Ubututu(Natty)。我已经编译了正常工作的静态库,但是当我将env var PROJECT_BASE设置为包含空格的路径时,我收到错误:

make
/bin/sh: Syntax error: Unterminated quoted string
/bin/sh: Syntax error: Unterminated quoted string
/home/username/Documents/poco-1.4.1p1/build/rules/global:62: *** Current working directory not under $PROJECT_BASE. Stop.

我已将PROJECT_BASE设置为:

/files/Dropbox/Myname\'s\ Work/C++\ Work

我相信应该正确转义?添加一个trailling退格键会给我一个替代错误:

make
/bin/sh: Syntax error: Unterminated quoted string
awk: line 1: runaway string constant "/files/Dro ...
/home/username/Documents/poco-1.4.1p1/build/rules/global:62: *** Current working directory not under $PROJECT_BASE. Stop.

我可能会遗漏一些基本的东西,但是我已经摔跤了几天才能让Poco C ++ Library构建系统设置我想要它无济于事:SI知道README说了一些关于SYMBLINKS搞砸了PROJECT_BASE,但我没有使用任何:S /文件是一个ext4挂载(相同的硬盘,单独的分区),如果这是相关的。

感谢您的帮助!

3 个答案:

答案 0 :(得分:4)

对于其他人来说:“ * 目前的工作目录不在$ PROJECT_BASE下。停止。”错误,我找到了一个可能听起来很模糊的解决方案。

基本上,如果任何父目录是符号链接,它将生成此错误。

  

重要说明:确保构建目录的路径没有   包含符号链接。此外,在Mac OS X(或其他系统上)   使用不区分大小写的文件系统),确保中的字符   路径有正确的情况。否则你会收到一个错误说   “目前的工作目录不在$ PROJECT_BASE下。”。

http://pocoproject.org/docs/00200-GettingStarted.html

在我的情况下,我正在编译5级深度的库,第二个目录是符号链接。将其更改为目录解决了问题。

HTH

答案 1 :(得分:2)

需要非常小心和刻意努力使makefile等系统准确处理带空格的路径名。可以办到;这不是微不足道的。很明显,这个包没有这么修改;它就像大多数这样的包。

如果你真的想为自己制造生活地狱,请使用路径名,例如:

/home/mine/He said, "Don't do it!"/poco-1.4.1

空格,单引号和双引号 - 至少不包括反引号,美元,括号,换行符等。

与此同时,向不可避免的方向屈服 - 使用一个没有空格等的路径名。

答案 2 :(得分:0)

如果您的问题不在符号链接中,就像在我的情况下一样,您可能没有指定完整路径,而是指定相对路径,如以下博文中所示。

http://fatalfeel.blogspot.com/2013/09/poco-with-cocos2d-in-android-and-ios.html