繁体   English   中英

如何通过 CMake 在 Info.plist 中设置 NSHighResolutionCapable?

[英]How can I set NSHighResolutionCapable in Info.plist via CMake?

我目前正在使用 CMake 来构建 Mac 应用程序。 我可以使用如下命令设置多个 Info.plist 文件:

SET(MACOSX_BUNDLE_LONG_VERSION_STRING ${MYAPP_VERSION})

我想在我的 Info.plist 文件中设置NSHighResolutionCapable 不幸的是,没有像MACOSX_BUNDLE_HIGH_RESOLUTION_CAPABLE这样的属性。 如何使用 CMake 以编程方式设置此 Info.plist 值?

你不能。 您只能从 CMake 编辑几组 Info.plist 属性。 显示在这里 但是您可以提供自己的 Info.plist 模板,以便在 CMake 中的 OSX Bundle 中使用。 这是我使用的代码:

function(osxBundle bundleName subDirList dependList)

    processTarget("${bundleName}" APPLE_BUNDLE "${subDirList}" "${dependList}")

    # Info.plist configure
    # Proyect provides its own Info.plist?
    if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist)
        set_target_properties(${bundleName} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist)
    # Use default template
    else()
        set_target_properties(${bundleName} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SCRIPTS_PATH}/Info.plist)
    endif()

    # Overwrite some properties (not used yet)
    # MACOSX_BUNDLE_BUNDLE_NAME
    # MACOSX_BUNDLE_BUNDLE_VERSION
    # MACOSX_BUNDLE_COPYRIGHT
    # MACOSX_BUNDLE_GUI_IDENTIFIER
    # set_target_properties(${bundleName} PROPERTIES MACOSX_BUNDLE_ICON_FILE logo.icns)
    # MACOSX_BUNDLE_INFO_STRING
    # MACOSX_BUNDLE_LONG_VERSION_STRING
    # MACOSX_BUNDLE_SHORT_VERSION_STRING

    target_link_libraries(${bundleName} ${COCOA_LIB})

endfunction()

另一种解决方案是运行 post build 命令来修改 plist:

  add_custom_command(
      TARGET foobar
      POST_BUILD
      COMMAND plutil -replace NSHighResolutionCapable -bool true foobar.app/Contents/Info.plist
      )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM