【问题标题】:Setting the application icon for OSX in Qt Creator在 Qt Creator 中设置 OSX 的应用程序图标
【发布时间】:2017-12-07 10:00:59
【问题描述】:

按照 OSX 的说明操作:http://doc.qt.io/qt-5/appicon.html 说明我需要做的就是将ICON = myapp.icns 添加到我的项目文件中。 我使用了我从 Qt 本身窃取的 ICNS 文件之一(换句话说,它应该可以工作,它不是转换问题)并且在运行 qmake 后构建时出现错误

make: *** No rule to make target '1.22/MyProject.icns', needed by 'myapp.app/Contents/Resources/MyProject.icns'

我经常使用 make 但对 Qt 几乎没有经验,所以我不知道它在这里试图告诉我什么(我什至不知道这些文件路径来自哪里)。 .icns 文件已添加到资源 .qrc 中,位于项目的基本目录中。

非常感谢任何帮助。谢谢!

编辑: 好的,文件路径中的空间阻止了构建。它现在可以编译并运行,但仍然没有停靠图标。

这是Simon Warta要求的grep命令的输出:

_Qt_5_1_1_clang_64bit-Debug/Makefile | grep -C 3 icns
443
444 :
445     @$(DEL_FILE)
446     @sed -e "s,@SHORT_VERSION@,1.22,g" -e "s,@TYPEINFO@,????,g" -e "s,@ICON@,myapp.icns,g" -e "s,@EXECUTABLE@,myapp,g" -e "s,@TYPEINFO@,????,g" ../myapp1.22/myapp.plist >
447 myapp.app/Contents/Resources/myapp.icns: ../myapp1.22/myapp.icns
448     @test -d myapp.app/Contents/Resources/ || mkdir -p myapp.app/Contents/Resources/
--
448     @test -d myapp.app/Contents/Resources/ || mkdir -p myapp.app/Contents/Resources/
449     @$(DEL_FILE) myapp.app/Contents/Resources/myapp.icns
450     @$(COPY_FILE) ../myapp1.22/myapp.icns myapp.app/Contents/Resources/myapp.icns
451 dist:
452     @test -d .tmp/myapp1.22 || mkdir -p .tmp/myapp1.22

[[All my source files]]

477 compiler_rcc_clean:
478     -$(DEL_FILE) qrc_myapp.cpp
479 qrc_myapp.cpp: ../myapp1.22/myapp.qrc \
480         ../myapp1.22/myapp.icns \
481         ../myapp1.22/images/splashmyapp2.png \
482         ../myapp1.22/images/splashmyapp1.png \
483         ../myapp1.22/images/About.png \
--
--
481         ../myapp1.22/images/splashmyapp2.png \
482         ../myapp1.22/images/splashmyapp1.png \
483         ../myapp1.22/images/About.png
486     /Users/EngMac/Qt5.1.1/5.1.1/clang_64/bin/rcc -name myapp ../myapp1.22/myapp.qrc -o qrc_myapp.cpp

来自 myapp.pro:

ICON = myapp.icns
QMAKE_INFO_PLIST = myapp.plist

【问题讨论】:

  • “1.22/”是您的源目录路径的一部分吗?你那里有空吗?你能发布cat -n your-build-dir/Makefile | grep icns的输出吗?
  • 试试 ICON = $$PWD/myapp.icns 吗?根据我的经验,qmake 对 5.x 中的路径有点挑剔。
  • ICON = MyProject.icns 在 OS X 10.9 和 10.10 上的 Qt 5 项目中运行良好。
  • 最好使用以下命令来检查您的 Makefile。这将为您提供了解make 正在尝试做什么所需的所有上下文:cat -n your-build-dir/Makefile | grep -C 3 icns
  • 是的,目录路径中可能有空格。我周一去看看,然后汇报。感谢您的意见!

标签: c++ macos qt


【解决方案1】:

QMAKE_INFO_PLIST 必须称为Info.plist。它可能放置在您选择的自定义子目录中,但文件名是固定的。这是因为 OS X 系统会寻找具有该确切文件名的文件。

更多调试技巧(按重要性排序):

  1. 发布当前错误消息
  2. 更新 Makefile 部分cat -n [...]_Qt_5_1_1_clang_64bit-Debug/Makefile | grep -C 4 icns
  3. 在您的源代码中搜索QMAKE_INFO_PLIST 的其他位置:在您的存储库的根目录中调用git grep QMAKE_INFO_PLIST
  4. 发布您的Info.plist的内容
  5. 发布您的.pro 文件的内容

【讨论】:

  • 我将其更改为QMAKE_INFO_PLIST = Info.plist,但它仍然没有在输出目录中生成任何内容。有什么想法吗?
  • 您是否先完全删除了构建目录?
  • 是的,只是在删除 build-debug 目录后重建了所有内容(作为调试),但我仍然没有得到任何东西
  • 好吧……你能把你的.pro文件和Info.plist文件的全部内容都加进去吗?
  • 我实际上没有 Info.plist,它没有生成。我应该手动创建一个吗?
【解决方案2】:

我必须添加到 Project.pro:

ICON = Project.icns
QMAKE_INFO_PLIST = Info.plist

# Qt doesn't copy over the .icns file ?!
RESOURCE_FILES.files = $$ICON
RESOURCE_FILES.path = Contents/Resources
QMAKE_BUNDLE_DATA += RESOURCE_FILES

在 Info.plist 中:

<key>CFBundleIconFile</key>
<string>ContentCanvas</string>

似乎 Qt 没有将项目设置为将 .icns 文件复制到包中(至少在 Qt 5.9 中),因此将其放在 .plist 文件中是没有用的。 .pro 文件中的最后三行手动复制它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    • 2019-05-06
    • 1970-01-01
    • 2012-08-31
    • 2014-09-17
    相关资源
    最近更新 更多