【问题标题】:C++ Make compile errors with Poco Library - Path Name containing spacesC++ 使用 Poco 库编译错误 - 路径名包含空格
【发布时间】:2011-04-17 19:55:18
【问题描述】:

我正在尝试构建/安装/使用 Poco C++ 库。我正在运行 Ubututu (Natty)。我已经编译了运行良好的静态库,但是当我将环境变量 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

我认为应该正确转义?添加尾随退格会给我以下替代错误:

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++ 库构建系统,但我希望它无济于事:S 我知道自述文件中提到了 SYMBLINKS 搞砸了PROJECT_BASE,但我没有使用任何 :S /files 是一个 ext4 挂载(相同的硬盘,单独的分区),如果这完全相关的话。

感谢您的帮助!

【问题讨论】:

  • 包含引号字符和/或空格的路径在 shell 脚本中经常被错误地处理 - 只需避免它们,您的生活就会轻松很多
  • 也许只是提交错误? makefile 很可能在某处出现问题
  • 嗯,是的,按照这个速度,我可能只是换成使用不同的 c++ 库:P 我的印象是 Poco 没有被广泛使用/支持。我不愿意重命名目录以删除我的保管箱上的空格,因为它会同步到其他 3 个地方,并且很可能会冲突/重复加载文件:P

标签: c++ unix escaping makefile poco


【解决方案1】:

对于其他获得以下信息的人:“* 当前工作目录不在 $PROJECT_BASE 下。停止。”错误,我找到了一个可能听起来晦涩难懂的解决方案。

基本上,如果任何父目录是符号链接,就会产生这个错误。

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

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

在我的例子中,我正在编译库 5 级深度,第二个目录是一个符号链接。将其更改为目录即可解决问题。

HTH

【讨论】:

    【解决方案2】:

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

    如果你真的想让自己的生活陷入困境,请使用如下路径名:

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

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

    与此同时,向不可避免的事情低头 - 使用不带空格等的路径名。

    【讨论】:

    • ahaha 有一种感觉可能是这种情况:) 通常我的解决方案是使用符号链接将路径转换为更好的路径......但是可以安装子目录到unix的不同地方?又名 mount /files/path 在/ /nicerpath 中有愚蠢的空格? - 谢谢你的回复:)
    • @Technosites:我认为不可能按照建议避免使用mount 的空格。使用名称中没有空格的符号链接应该可以工作。旨在保持 POSIX portable filename character set.
    【解决方案3】:

    如果您的问题不在于符号链接(如我的情况),您可能没有指定完整路径,而是指定了相对路径,如以下博客文章所示。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-18
      • 2012-06-06
      • 2011-05-19
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多