cmake:设置Mac OS X应用程序的图标

时间:2014-03-30 15:17:32

标签: macos icons cmake

使用cmake环境安装Mac OS X应用程序,我想设置并安装图标 在安装过程中。

因此,我尝试设置

set( MACOSX_BUNDLE_ICON_FILE ${CMAKE_CURRENT_SOURCE_DIR}/images/myAopImage.icns )
ADD_EXECUTABLE(MYAPP MACOSX_BUNDLE ${MACOSX_BUNDLE_ICON_FILE} ${allSources})
#(I could set it in the source directory to any other path)

但是,这不起作用,它将完整路径写入Info.plist, 并且什么都不安装到Resources目录中(资源目录甚至没有得到 在安装的app文件夹中创建)

无论如何,即使我手工将信息放入Info.plist中

<key>CFBundleIconFile</key>
<string>myAppImage.icns</string>

并手动创建Resources目录,将icns文件放入

该图标无论如何都会出现。

我该如何解决这个问题?首先可以手工完成,但也可以在cmake上下文中进行?

2 个答案:

答案 0 :(得分:9)

从CMake中捆绑.icns文件有两个部分:添加源文件本身,并在.plist中配置它。如果要指定.icns文件的路径(例如,因为它位于子目录中),那么这两个属性将稍微不同地引用.icns文件:

# NOTE: Don't include the path in MACOSX_BUNDLE_ICON_FILE -- this is
# the property added to Info.plist
set(MACOSX_BUNDLE_ICON_FILE myAppImage.icns)

# And this part tells CMake where to find and install the file itself
set(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/images/myAppImage.icns)
set_source_files_properties(${myApp_ICON} PROPERTIES
       MACOSX_PACKAGE_LOCATION "Resources")

add_executable(myApp MACOSX_BUNDLE ${myApp_ICON} ${allSources})

答案 1 :(得分:5)

要将icns文件复制到Resources文件夹,您需要在其上设置source属性。

set_source_files_properties(myAppImage.icns PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")

另外,我在某处读到plist中的字符串不需要.icns,所以

<string>myAppImage</string> 

应该没问题。