我正在尝试创建一个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