【问题标题】:How can I set NSHighResolutionCapable in Info.plist via CMake?如何通过 CMake 在 Info.plist 中设置 NSHighResolutionCapable?
【发布时间】:2020-02-14 09:50:46
【问题描述】:

我目前正在使用 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


【解决方案1】:

你不能。您只能从 CMake 编辑一些 Info.plist 属性。 Show here。但是您可以提供自己的 Info.plist 模板,以便在 CMake 中的 OSX 捆绑包中使用。这是我使用的代码:

函数(osxBundle bundleName subDirList 依赖列表) processTarget("${bundleName}" APPLE_BUNDLE "${subDirList}" "${dependList}") # Info.plist 配置 # Proyect 提供了自己的 Info.plist? 如果(存在 ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist) set_target_properties(${bundleName} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist) # 使用默认模板 别的() set_target_properties(${bundleName} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SCRIPTS_PATH}/Info.plist) 万一() # 覆盖一些属性(尚未使用) # 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}) 结束函数()

【讨论】:

    【解决方案2】:

    另一种解决方案是运行构建后命令来修改 plist:

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

    【讨论】:

      猜你喜欢
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      • 2020-11-16
      • 2018-06-04
      相关资源
      最近更新 更多