【问题标题】:How to add an extra plist property using CMake?如何使用 CMake 添加额外的 plist 属性?
【发布时间】:2010-12-20 01:00:31
【问题描述】:

我正在尝试添加项目

<key>UIStatusBarHidden</key><true/>

到我的由 CMake 自动生成的 plist。对于某些键,似乎有预定义的添加项目的方法;例如:

set(MACOSX_BUNDLE_ICON_FILE ${ICON})

但我找不到添加任意属性的方法。

我尝试使用MACOSX_BUNDLE_INFO_PLIST 目标属性,如下所示:我希望生成的 plist 与旧的相同,除了我想要的新属性,所以我只是复制了自动生成的 plist 并设置它作为我的模板。但是 plist 使用了一些 Xcode 变量,看起来也像 ${foo},CMake 对此表示不满:

cmake 代码中的语法错误 解析字符串

  <string>com.bedaire.${PRODUCT_NAME:identifier}</string>

语法错误,意外的 cal_SYMBOL, 期待 } (47)

策略 CMP0010 未设置:错误 变量引用语法是错误的。 运行“cmake --help-policy CMP0010” 了解政策详情。使用 cmake_policy 命令设置 策略并禁止显示此警告。这 警告是针对项目开发人员的。 使用 -Wno-dev 来抑制它。

无论如何,我什至不确定这是不是正确的做法。我找不到一个好的例子或任何好的文档。理想情况下,我会让 CMake 像以前一样生成所有内容,然后添加一个额外的行。我能做什么?

【问题讨论】:

    标签: iphone macos plist cmake


    【解决方案1】:

    您是否考虑过将相关的*.plist.in文件复制到/opt/local/share/cmake-2.8/Modules(如MacOSXBundleInfo.plist.in),将其编辑为放入&lt;key&gt;UIStatusBarHidden&lt;/key&gt;&lt;true/&gt;(或@VAR_TO_REPLACE_BY_CMAKE@),并将编辑后版本的目录添加到CMAKE_MODULE_PATH?

    如果您将 CMake 作为应用程序包安装,则该文件的位置为 /Applications/CMake.app/Contents/share/cmake-N.N/Modules

    【讨论】:

    • 谢谢!我有一段时间没有注意到这个答案,但它很棒! (我什至不知道那些*.plist.in 文件存在。FWIW,我创建了自己的一个(基于MacOSXBundleInfo.plist.in)并将我的目标上的MACOSX_BUNDLE_INFO_PLIST 属性设置为那个新的。)
    • 仅供参考:看起来 MacOSXBundleInfo.plist.in 已移至 /Applications/CMake 2.8-10.app/Contents/share/cmake-2.8/Modules... 或者 CMake 有不同的安装选项来确定这些文件的最终位置。
    【解决方案2】:

    您可以使用 @ 添加您的值并将 @ONLY 传递给 configure_file。

    不幸的是,没有简单的方法可以将自定义行添加到生成的文件中。

    【讨论】:

    • 你是什么意思“使用@添加你的值”;另外,我不会在任何地方打电话给configure_file。当前 plist 是自动生成的。
    • 啊,我以为这就是您收到错误的原因。那么你从哪里得到它?
    猜你喜欢
    • 1970-01-01
    • 2014-02-14
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多