2009-09-09 20 views
15

Tôi đang sử dụng Xcode 3.2 với xcconfig tệp. Các tệp được sắp xếp theo mục tiêu. Ví dụ: tôi có một tệp debug.xcconfig và một tệp là release.xcconfig. Cả hai đều sử dụng các cài đặt chung, vì vậy tôi đã thêm tệp shared.xcconfig được bao gồm bởi cả hai.Xcode: Cách cài đặt môi trường gỡ lỗi với nhiều tệp xcconfig?

File shared.xcconfig trông như thế này:

GCC_C_LANGUAGE_STANDARD = c99 
GCC_WARN_ABOUT_RETURN_TYPE = YES 
GCC_WARN_UNUSED_VARIABLE = YES 
GCC_PREPROCESSOR_DEFINITIONS = SOME_COMMON_DEFINITIONS 

File debug.xcconfig trông như thế này:

#include "Shared.xcconfig" 
GCC_OPTIMIZATION_LEVEL = 0 

Bây giờ, tôi muốn thêm một định nghĩa DEBUG tiền xử lý trong file debug.xcconfig. Như được hiển thị trong this question, phương pháp sau đây được yêu cầu hoạt động:

GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) DEBUG" 

Điều này không hoạt động trong Xcode 3.2. Tài liệu Xcode cũng đề cập rõ ràng rằng các biến sửa đổi là không thể, bạn chỉ có thể ghi đè chúng.

Các bạn sẽ giải quyết vấn đề này như thế nào?

Trả lời

17

Cách mà chúng ta đã giải quyết điều này trong quá khứ là để mỗi lớp soạn một tập con của các định nghĩa, sau đó đưa tất cả chúng lại với nhau ở xcconfig cấp lá.

Trong shared.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS_SHARED = qFoo qBar qBaz 

Trong debug.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS_DEBUG = qDebug 
GCC_PREPROCESSOR_DEFINITIONS = $(GCC_PREPROCESSOR_DEFINITIONS_SHARED) $(GCC_PREPROCESSOR_DEFINITIONS_DEBUG) 

(Ưu điểm để làm cho các biến tập hợp con verbose là họ đang tự từ điển tương tự như giá trị mà họ được sử dụng để soạn, làm cho chúng dễ tìm hơn trong tệp cấu hình.)

+0

Một giải pháp khác, nếu bạn không thể chỉnh sửa tên biến trong xcconfig bạn đưa vào, hãy đặt xcconfig bạn muốn đưa vào dự án và bạn cụ thể hơn cho mục tiêu. Điều này sẽ làm cho công việc thừa kế. Xem Github vấn đề bình luận này để biết thêm thông tin: https://github.com/CocoaPods/CocoaPods/issues/1212#issuecomment-52272400 –

-1

Làm thế nào để sử dụng $ (được kế thừa)?

GCC_PREPROCESSOR_DEFINITIONS = $ (di truyền) DEBUG

+2

Sẽ được tốt đẹp nếu nó làm việc, nhưng tiếc là nó không có trong tập tin .xcconfig. –

1

Tiếp theo nên làm việc:

xcodebuild GCC_PREPROCESSOR_DEFINITIONS='$(value) BAR=1' 
5

Bạn cũng có thể sử dụng định dạng sau đây trong một tập tin .xcconfig. (hoạt động trong xcode 4, không được thử nghiệm trong xcode 3). Nó chỉ là một ví dụ, dường như hoạt động cho tất cả các thiết lập.

ARCHS=i386 x86_64 
ARCHS[config=Debug]=i386 
ARCHS[config=Release]=i386 x86_64