CMake:复制图标以捆绑资源

时间:2014-11-28 04:25:14

标签: macos cmake

我有一个构建MACOSX_BUNDLE可执行文件的CMakeLists.txt脚本,但我很难找到将图标文件放入bundle资源目录的“正确方法”。我使用以下内容设置图标包属性:

# set icon
set( ICON_NAME "MyApp.icns" )
set( ICON_PATH "${PROJECT_SOURCE_DIR}/../data/${ICON_NAME}" )

set_target_properties( MyApp PROPERTIES MACOSX_BUNDLE_ICON_FILE ${ICON_NAME} )

看来正确的方法(如this existing post中所示)应为:

set_source_files_properties( ${ICON_PATH} PROPERTIES MACOSX_PACKAGE_LOCATION Resources )

但是,没有MyApp.app/Contents/Resources,也没有复制MyApp.icns ..以下是(在我看来)一种解决方法:

file( COPY ${ICON_PATH} DESTINATION "MyApp.app/Contents/Resources/" )

由于我经常将事情复制到资源文件夹中,我宁愿以'正确的方式'来做,但是有人能说出为什么这不起作用,因为我已经在上面做了吗?

1 个答案:

答案 0 :(得分:5)

您还必须将图标(带完整路径)作为资源添加到可执行文件中:

add_executable( MyApp MACOSX_BUNDLE main.cpp ${ICON_PATH})

然后它会自动复制到资源文件夹。