0

我有一个带有以下 Podfile 的 Xcode 项目:

pod '!ProtoCompiler-gRPCPlugin', '~> 1.33'
pod 'gRPC', '~> 1.33'
pod 'libopus'

问题在于,由于 GRPC 决定使用 Abseil 作为依赖项,因此发生了奇怪的冲突。编译时,我在 Pods/abseil/base/config.h 上收到以下错误:

'absl/base/options.h' file not found

但堆栈中的先前调用实际上位于 Pods/libopus/float/warped_autocorrelation_FLP.c :

#include "config.h"

这没有意义,因为特定的config.hlibopus 试图获取实际上是在同一个 pod 目录中。

知道如何解决这个问题吗?我尝试了多个版本的 libopus,但静态版本本身就引起了问题。

4

1 回答 1

0

看来冲突是由HEADER_MAP = YES没有正确命名空间的构建设置“泄漏”标头引起的。

解决此问题的方法是隔离具有标头冲突的库,然后:

  • 将它们设置HEADER_MAP为 NO
  • 通过添加标题HEADER_SEARCH_PATHS

要在您的 Podfile 中自动化它:


post_install do |installer|

    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            # Prevent header conflicts
            if ['LIBRARY_A', 'LIBRARY_B'].include? target.name
                config.build_settings["USE_HEADERMAP"] = "NO"
                config.build_settings["HEADER_SEARCH_PATHS"] = "${PODS_TARGET_SRCROOT}/**"
            end
        end
    end

end

于 2020-12-07T13:09:29.423 回答