在使用CocoaPods进行编译的过程中包括目录作为搜索路径 堆栈安装源插件

我正在尝试创建一个iOS项目,其中包括在其他平台(Android)之间共享的C代码。我正在编译的某些第三方库依赖于包含某些目录作为搜索路径。但是,无论我尝试什么,都无法使Cocoapods .podspec文件在编译搜索路径中包含给定目录。我正在使用Cocoapods 1.8.4

虽然这是Flutter插件,但据我了解,这是Cocoapods / Xcode的问题,因为Flutter仅设置了项目文件。但是,值得注意的是Flutter设置了一个示例工作空间,我不想修改它。我希望将插件本身修改为在必需的代码中进行编译,而不是在示例工作空间/项目中进行编译。换句话说,我只希望修改ios/repro_cocoapods_issue.podspec文件。

如果有关系,我使用以下Flutter命令创建项目:

flutter create -t plugin -i objc -a java repro_cocoapods_issue

我在GitHub here上有完整的介绍。要进行复制,请在Xcode的example/ios/Runner.xcworkspace中打开工作区,然后尝试构建。

这些是我在ios/repro_cocoapods_issue.podspec文件中尝试过的事情:

  • s.xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PROJECT_DIR}/external/"'}
  • s.xcconfig = { 'USER_HEADER_SEARCH_PATHS' => '"${PROJECT_DIR}/external/"'}
  • s.user_target_xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PROJECT_DIR}/external/"'}
  • s.user_target_xcconfig = { 'USER_HEADER_SEARCH_PATHS' => '"${PROJECT_DIR}/external/"'}
  • s.pod_target_xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PROJECT_DIR}/external/"'}
  • s.pod_target_xcconfig = { 'USER_HEADER_SEARCH_PATHS' => '"${PROJECT_DIR}/external/"'}
  • s.compiler_flags = '-Iexternal/'
  • s.preserve_paths = 'external/**'
  • s.preserve_paths = '${PROJECT_DIR}/external/**'

在所有情况下,我都会得到:

'external_dir.c' file not found

如果我将代码更改为#include ../external/external_dir.c,那么它可以工作,但这对我的实际用例没有帮助。


  

如何配置我的podspec,以便在编译过程中将指定目录包含在搜索路径中?



pod env

的输出

堆栈

   Cocoapods : 1.8.4
        Ruby : ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]
    RubyGems : 2.5.2.3
        Host : Mac OS X 10.14.6 (18G95)
       Xcode : 11.1 (11A1027)
         Git : git version 2.23.0
Ruby lib dir : /System/library/Frameworks/Ruby.framework/Versions/2.3/usr/lib
Repositories : master - git - https://github.com/Cocoapods/Specs.git @ d13a0869021d940f32f0543a03500755b39be998

安装源

Executable Path: /usr/local/bin/pod

插件

cocoapods-deintegrate : 1.0.4
cocoapods-plugins     : 1.0.0
cocoapods-search      : 1.0.0
cocoapods-stats       : 1.1.0
cocoapods-trunk       : 1.4.1
cocoapods-try         : 1.1.0
guo2luo4 回答:在使用CocoaPods进行编译的过程中包括目录作为搜索路径 堆栈安装源插件

在最终找到答案后,回答我自己的问题。

某事正在积极地缓存.podspec文件的“输出”。造成此问题的原因是,我正在更改.podspec和清理+重建,希望这足以接受我的更改,但事实并非如此。如果我改用git clean -xdf然后 then 构建,则所做的更改会被提取。

我最终使用了我期望可以使用的属性(对上述内容进行了一些细微的调整,一旦使用了 ,就很容易弄清楚):

    s.source_files          = [
        'Classes/**/*','shared_c/**/*'
    ]
    s.public_header_files   = [
        'Classes/**/*.h','shared_c/*.h'
    ]
    s.xcconfig              = {
        'HEADER_SEARCH_PATHS' => [
            '"${PODS_TARGET_SRCROOT}/shared_c/"'
        ],'GCC_PREPROCESSOR_DEFINITIONS' => 'SOME_SYMBOL_FOR_THIRD_PARTY_CODE=1 SOME_OTHER_SYMBOL=1'
    }
    s.dependency 'Flutter'

    s.ios.deployment_target = '9.0'

关于为何如此积极地缓存文件,我需要跟Flutter团队保持联系(我希望他们说这是CocoaPods / XCode问题)。

,

确保对podspec文件的每次编辑也会增加其版本。

CocoaPods podspecs版本被认为是不可变的,并因此被缓存。参见pod cache listpod cache clean

本文链接:https://www.f2er.com/3168065.html

大家都在问