2017-05-10 56 views
0

在我當前的項目中,我試圖在兩個子配置中包含一個內部Pod,其中一個用於常規應用程序,另一個用於今天的窗口小部件擴展。不幸的是,Cocoapods(1.2.1)錯誤地推斷了pod目標的構建標誌。兩個目標 - 擴展pod目標和普通應用pod目標 - 都具有「僅需要應用程序擴展安全API」設置爲YES,從而生成-fapplication擴展CLANG編譯器標誌。可悲的是,一個目標不會構建在這個配置中。Cocoapods:無法設置pod構建設置

手動將該標誌設置爲NO可解決問題,但僅限於下一個pod更新。具體而言,這是我試圖解決設置:

screencap

我甚至不知道什麼啓發的CocoaPods使用推斷閹這需要打開或關閉被打開,但有一種明確設置目標構建設置的方法?我試圖

s.subspec 'Core' do |core| 
    core.dependency 'xxxxxxx','~> 1.0.1' 
    core.source_files = 'Pod/Sources/**/*.{h,m,mm}' 
    core.ios.xcconfig   = { 
    'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES', 
    'APPLICATION_EXTENSION_API_ONLY' => 'NO' 
    } 
    core.tvos.xcconfig = { 
    'GCC_PREPROCESSOR_DEFINITIONS' => 'TVOS=1', 
    'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' 
    } 
end 

s.subspec 'Core' do |core| 
    core.dependency 'xxxxxxx','~> 1.0.1' 
    core.source_files = 'Pod/Sources/**/*.{h,m,mm}' 
    core.pod_target_xcconfig = { 'APPLICATION_EXTENSION_API_ONLY' => 'NO' } 
    core.ios.xcconfig   = { 
    'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES', 
    } 
    core.tvos.xcconfig = { 
    'GCC_PREPROCESSOR_DEFINITIONS' => 'TVOS=1', 
    'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' 
    } 
end 

不幸的是,無濟於事。該設置仍然固執地在YES。我在我的智慧結束了。任何我可以嘗試的?

回答

0

自我回答:我仍然不知道如何強制設置,但問題實際上是在我們的(多層)依賴關係圖中。應用程序和應用程序擴展目標都使用了依賴的subspec,因此強制該子目標目標的編譯器標誌。

我通過添加另一個subspec來修復它,以便應用程序和擴展程序不共享pod目標。