【问题标题】:Header file not found when xcconfig file is used in ios Projectios项目中使用xcconfig文件时找不到头文件
【发布时间】:2017-08-07 08:44:56
【问题描述】:

我正在使用 xcconfig 文件在调试和发布模式下定义密钥。这是我的 podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'



target 'MainTarget' do
    use_frameworks!
    pod 'Alamofire','~>4.4'
    pod 'KFSwiftImageLoader'
    pod 'FMDB'
    pod 'Fabric'
    pod 'Crashlytics'
    pod 'Charts'
    pod 'OpenSSL-Universal'
    pod 'EVReflection'
    pod 'Socket.IO-Client-Swift'
    pod 'GoogleMaps'
end

target 'Target2' do
    use_frameworks!
    pod 'Alamofire','~>4.4'
end

target 'Target3' do
    use_frameworks!
    pod 'Alamofire','~>4.4'
end


target 'NetworkLibrary' do
    use_frameworks!
    pod 'Alamofire','~>4.4'
end

Target2,Target3,Network Library 是添加到项目中的框架。 以下是我的 dubug.xcconfig:

#include "Pods/Target Support Files/Pods-MainTarget/Pods-MainTarget.debug.xcconfig"
#include "Pods/Target Support Files/Pods-NetworkLibrary/Pods-NetworkLibrary.debug.xcconfig"
#include "Pods/Target Support Files/Pods-Target1/Pods-Target1.debug.xcconfig"
#include "Pods/Target Support Files/Pods-Target2/Pods-Target.debug.xcconfig"

MAIN_KEY = 3145bjk34
FULL_KEY = 23bjkkj31

我以类似的方式定义了 release.xcconfig(只是更改了键值和 pod 包含)。 我收到错误 FMDB.h 文件未找到。为什么我会得到这个?在添加配置之前一切正常。我也在 Info 选项卡中添加了我的配置文件。

有趣的是,如果我像下面这样更改我的 podfile,它工作正常:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'


target 'MainTarget' do
    use_frameworks!
    pod 'Alamofire','~>4.4'
    pod 'KFSwiftImageLoader'
    pod 'FMDB'
    pod 'Fabric'
    pod 'Crashlytics'
    pod 'Charts'
    pod 'OpenSSL-Universal'
    pod 'EVReflection'
    pod 'Socket.IO-Client-Swift'
    pod 'GoogleMaps'
end

target 'Target1' do
    use_frameworks!
    pod 'Alamofire','~>4.4'
    pod 'KFSwiftImageLoader'
    pod 'FMDB'
    pod 'Fabric'
    pod 'Crashlytics'
    pod 'Charts'
    pod 'OpenSSL-Universal'
    pod 'EVReflection'
    pod 'Socket.IO-Client-Swift'
    pod 'GoogleMaps'
end

target 'Target2' do
    use_frameworks!
    pod 'Alamofire','~>4.4'
    pod 'KFSwiftImageLoader'
    pod 'FMDB'
    pod 'Fabric'
    pod 'Crashlytics'
    pod 'Charts'
    pod 'OpenSSL-Universal'
    pod 'EVReflection'
    pod 'Socket.IO-Client-Swift'
    pod 'GoogleMaps'
end


target 'NetworkLibrary' do
    use_frameworks!
    pod 'Alamofire','~>4.4'
    pod 'KFSwiftImageLoader'
    pod 'FMDB'
    pod 'Fabric'
    pod 'Crashlytics'
    pod 'Charts'
    pod 'OpenSSL-Universal'
    pod 'EVReflection'
    pod 'Socket.IO-Client-Swift'
    pod 'GoogleMaps'
end

如果我将所有 pod 添加到框架中,它工作正常。为什么会发生这种情况?

【问题讨论】:

    标签: ios cocoapods xcconfig


    【解决方案1】:

    尝试继承搜索路径。这是您可以尝试的 Podfile 版本。

    source 'https://github.com/CocoaPods/Specs.git'
    platform :ios, '9.0'
    use_frameworks!
    
    target 'MainTarget' do
        pod 'Alamofire','~>4.4'
        pod 'KFSwiftImageLoader'
        pod 'FMDB'
        pod 'Fabric'
        pod 'Crashlytics'
        pod 'Charts'
        pod 'OpenSSL-Universal'
        pod 'EVReflection'
        pod 'Socket.IO-Client-Swift'
        pod 'GoogleMaps'
    
        target 'Target2' do
            inherit! :search_paths
        end
    
        target 'Target3' do
            inherit! :search_paths
        end
    
        target 'NetworkLibrary' do
            inherit! :search_paths
        end
    
    end
    

    如果这不起作用,abstract_target 可以解决问题

    source 'https://github.com/CocoaPods/Specs.git'
    platform :ios, '9.0'
    use_frameworks!
    
    abstract_target 'Defaults' do
        pod 'Alamofire','~>4.4'
        pod 'KFSwiftImageLoader'
        pod 'FMDB'
        pod 'Fabric'
        pod 'Crashlytics'
        pod 'Charts'
        pod 'OpenSSL-Universal'
        pod 'EVReflection'
        pod 'Socket.IO-Client-Swift'
        pod 'GoogleMaps'
    
        target 'MainTarget' do
        end
    
        target 'Target2' do
        end
    
        target 'Target3' do
        end
    
        target 'NetworkLibrary' do
        end
    end
    

    【讨论】:

    • 有了这个,我在目标 1 和目标 2 中构建说“Alamofire 无法在底层模块中加载”时出错。我可以通过将所有 pod 添加到框架来解决这个问题,但我的问题是为什么是这样吗?谢谢你的回答
    • 老实说,我不完全理解您的问题。如果由于某种原因,您的其他目标确实需要 pod,那么您可以尝试使用abstract_target,如我更新的答案中所示。
    猜你喜欢
    • 2022-01-17
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 2013-07-19
    • 2013-01-31
    相关资源
    最近更新 更多