CMake:复制图标以捆绑资源

ric*_*h.e 5 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} )
Run Code Online (Sandbox Code Playgroud)

看来正确的方法(如现有帖子中所示)应该是:

set_source_files_properties( ${ICON_PATH} PROPERTIES MACOSX_PACKAGE_LOCATION Resources )
Run Code Online (Sandbox Code Playgroud)

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

file( COPY ${ICON_PATH} DESTINATION "MyApp.app/Contents/Resources/" )
Run Code Online (Sandbox Code Playgroud)

因为我经常把东西复制到resouces文件夹中,我宁愿用'正确的方式'来做,但是有人能说出为什么这不起作用,因为我已经在上面做了吗?

Lar*_*lke 5

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

add_executable( MyApp MACOSX_BUNDLE main.cpp ${ICON_PATH})
Run Code Online (Sandbox Code Playgroud)

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