【发布时间】: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