【问题标题】:Cmake Xcode add extension via new copy files phaseCmake Xcode 通过新的复制文件阶段添加扩展
【发布时间】:2018-02-22 08:36:08
【问题描述】:

我正在尝试使用 cmake (3.8.0) 构建一个 Xcode 9 项目。它由一个app target和一个appex(extension)target组成,需要通过Build Phases中的“Copy Files Phase”(或“Embed App Extension Phase”)复制到app的Plugins目录中。

我尝试了几次尝试,比如打电话 set_source_files_properties(${myFile} PROPERTIES MACOSX_PACKAGE_LOCATION PlugIns) 但到目前为止没有运气。

我认为困难(对于 cmake)是实际文件“myExtension.appex”是在构建时创建的,因此硬编码将其添加为源文件的路径似乎不起作用。

任何帮助将不胜感激!

【问题讨论】:

    标签: xcode cmake ios-app-extension macos-app-extension


    【解决方案1】:

    我们只是设法以一种奇怪的方式解决了这个问题(如果你已经解决了这个问题,让它成为其他任何人的解决方案——比如我——试图解决这个问题)

    当你在项目中嵌入一个 appex 时,Xcode 基本上改变了项目中的两件事:将 appex 添加为项目的依赖项,并添加一个 PBXCopyFilesBuildPhase 以确保编译后的 .appex 最终出现在插件的 PlugIns 文件夹中。结果包。

    所以我们模仿了这两个步骤。将依赖项添加到 appex 很容易:

    add_dependencies("${_PROJECT_NAME}" ${APP_EXTENSION_TARGET})
    

    在我们的例子中,${EXTENSION} 实际上是一个包含我们所有扩展的列表,所以你知道它也可以工作。 这将确保扩展在主应用程序之前构建。现在,为了确保它们放置在正确的位置,我们在应用程序 CMakeLists.txt 中添加了一个自定义 POST_BUILD 命令,如下所示:

    add_custom_command(TARGET "${target}" POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory "${PATH_TO_APPEX}" "$<TARGET_FILE_DIR:${target}>/PlugIns/${APPEX_FILE_BASENAME}" MAIN_DEPENDENCY "${APPEX_NAME}")
    

    所有这些都有一些帮助代码,但这就是它的要点。

    希望有帮助!

    【讨论】:

      【解决方案2】:

      在存档构建的情况下,您可以使用$(CONFIGURATION_BUILD_DIR)/$(CONTENTS_FOLDER_PATH) 而不是$&lt;TARGET_FILE_DIR:${target}&gt;

      【讨论】:

        猜你喜欢
        • 2013-11-15
        • 2013-08-11
        • 2017-11-28
        • 1970-01-01
        • 1970-01-01
        • 2023-03-09
        • 2016-05-29
        • 2013-07-11
        • 2023-04-04
        相关资源
        最近更新 更多