在Qt Creator中为OSX设置应用程序图标

时间:2015-03-26 19:08:36

标签: c++ macos qt

按照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

2 个答案:

答案 0 :(得分:3)

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. 的内容
  6. 发布.pro文件的内容

答案 1 :(得分:0)

我必须添加到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文件中的最后三行手动复制它。