【问题标题】:Use name with whitespace for qmake TARGET variable对 qmake TARGET 变量使用带空格的名称
【发布时间】:2016-03-24 13:04:48
【问题描述】:

iOS/OS X 应用程序名称通常包含空格(如“App Store.app”)。 但是当我试图在我的 Qt/ios 项目中使用这样的名称时:

ios: TARGET = "My Cool App"

构建过程失败,Qt Bash 脚本自动生成出现奇怪错误。

是我做错了什么,还是不支持名称中的此类空格?

UPD 问题第一次出现在 qmake 生成的 shell 脚本中:

#!/bin/sh
cp -r $BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME /Users/eraxillan/Projects/<PROJECT_DIR>

如果$FULL_PRODUCT_NAME 包含空格,则脚本将失败。

仅在自定义 DESTDIR 项目变量值的情况下生成和执行脚本 - 我的情况。
因此,看起来像 qmake 生成的脚本中的一个错误,用于将项目构建工件复制到自定义输出目录。

解决方法:

  • 从目标名称中删除空格(My Cool App --> my-cool-app)
  • 根本不要使用自定义 DESTDIR

希望这会有所帮助

【问题讨论】:

  • make 本身并不能很好地处理目标/名称中的空格(或根本不处理)。这只是语言如何工作的事实。
  • 但是 XCode 是如何构建像“App Store.app”这样的应用程序的呢?它认为它在内部使用 make,就像 Qt Creator/qmake do
  • 我不相信它会这样做(尽管它当然可以)并且最后生成的文件名是什么(假设这是您唯一担心的事情)与构建方式无关本身有效。您可以随时重命名它(并将空格名称放在 plist/etc. 文件中)。
  • 我不确定只重命名已编译的包就足够了 :( 看起来像 qmake 的 TARGET 做更多的事情
  • 问题不在于TARGET 的作用,而是您可以使用不同的TARGET,然后重命名捆绑包以获得您想要的应用程序名称。你可能做不到,它可能比这更复杂。我不知道。

标签: ios bash qt qt-creator qmake


【解决方案1】:

这应该可行:

TARGET = 我的“酷”“应用”

【讨论】:

  • (对不起,necro-answer)但不幸的是它没有:(
  • 你确定你使用的是单字符",而不是双'?
  • 是的,我是。仍然出现同样的错误:/bin/sh -c \"&lt;PROJECT_DIR&gt;/Script-9C316F444A62BF296E3E1F25.sh\" cp: /Users/eraxillan/Projects/&lt;PROJECT_NAME&gt;/Debug-iphonesimulator/My: No such file or directory
  • 我已经在 Qt 5.9 上测试过它并且它工作正常,也许它在 Qt 5.10 或其他版本上修复或更改
  • 也许吧,因为我使用的是 Qt 5.10.1。所以,看起来像一个错误/回归
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-02
相关资源
最近更新 更多