2013-07-28 27 views
6

Tôi có một không gian làm việc XCode được quản lý bởi Cocoapod với một vài phụ thuộc vào thư viện bên ngoài. Một trong số chúng, MTDates, mở rộng NSDateNSDateComponents với các phương thức có tiền tố hoặc không có tiền tố nếu một macro tiền xử lý nhất định được xác định (đó là những gì tôi muốn).Chỉ định macro tiền xử lý cho một phụ thuộc cocoapod, mà không cần giả mạo nó

Có một vài nơi tôi có thể đặt định nghĩa macro tiền xử lý để có thư viện được biên dịch cung cấp các phương thức không có tiền tố, nhưng tất cả dường như được đặt lại ngay sau khi tôi yêu cầu Cocoapod để cập nhật dự án tôi nghĩ rằng các cấu hình này được thúc đẩy bởi thông số kỹ thuật của nhóm. Chúng bao gồm:

  • mục tiêu xây dựng các thiết lập của pod
  • tin .xcconfig tập tin của pod trong tiêu Cocoapod của Hỗ trợ tập tin

Thay đổi đặc tả của pod sẽ yêu cầu để quản lý phiên bản riêng của tôi về thư viện, theo đó mất khả năng cocoapods để cập nhật khi phiên bản mới xuất hiện. Vì vậy, câu hỏi của tôi là: là có một cách để xác định một macro tiền xử lý cho một phụ thuộc cocoapod, mà không cần ép các pod và thay đổi thông số kỹ thuật của chính nó?

Sửa:

Có một open issue về vấn đề này, mà dường như chỉ quanh góc.

Trả lời

8

Chức năng này hiện khả dụng. Dưới đây là ví dụ về những gì bạn có thể đặt ở cuối Podfile của bạn để thêm macro dựa trên cấu hình cụ thể.

post_install do |installer_representation| 
    installer_representation.project.targets.each do |target| 
    if target.name == "Pods-TweaksBuildConfigurationsDemo-Tweaks" 
     target.build_configurations.each do |config| 
     if config.name == 'QA' 
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)', 'FB_TWEAK_ENABLED=1'] 
     end 
     end 
    end 
    end 
end 
+1

Sử dụng phiên bản cocoapods 1.0.0.beta.3 Tôi phải sử dụng installer_representation.pods_project thay vì installer_representation.project –

+7

Vì vậy, bạn cần thêm 10 dòng mã để xác định macro? Đó là khủng khiếp. – iosdude

1

Nhìn vào tài liệu Cocoapods, tôi không nghĩ rằng điều này là có thể được nêu ra, tôi nghĩ rằng những gì bạn có thể làm là sao chép thông số nhóm - thực hiện các thay đổi bạn muốn (ví dụ: s.prefix_header_contents = #define symbolToDefine) và sau đó thêm nó vào thông số kỹ thuật địa phương của bạn với một tên khác và sử dụng tên đó trong tệp nhóm của bạn. Khi một phiên bản mới xuất hiện không may, bạn phải vào và thay đổi số thẻ (và các thứ khác tùy thuộc vào các thay đổi).

+0

Cảm ơn rất nhiều, câu trả lời cho câu hỏi của tôi. Tôi sẽ tiếp tục và gửi một vấn đề để xem liệu chức năng đó có thể thực hiện theo cách của mình để làm chủ hay không. – matehat

Các vấn đề liên quan