2012-03-22 41 views
7

Tôi đang cố gắng khởi chạy xcodebuild với các macro tiền xử lý khác nhau.xcodebuild dòng lệnh bỏ qua GCC_PREPROCESSOR_DEFINITIONS

Tôi đã thử:

xcodebuild -scheme myscheme \ 
      -configuration "Archive" \ 
      -sdk "iphoneos5.1" 
      archive \ 
      CONFIGURATION_BUILD_DIR=../build \ 
      GCC_PREPROCESSOR_DEFINITIONS=ADHOC 

nhưng tôi đã nhận một lỗi biên dịch do thực tế Preprocessor không được sử dụng:

tôi không thể nhìn thấy nó với cờ -D của việc biên soạn lệnh

Nhưng nó sẽ được hiển thị ở phần đầu của kịch bản

Build settings from command line: 
     CONFIGURATION_BUILD_DIR = ../build 
     GCC_PREPROCESSOR_DEFINITIONS = ADHOC 
     SDKROOT = iphoneos5.1 

mã tại nguồn gốc của lỗi biên dịch là:

#ifdef ADHOC 
NSUInteger toto = 0; 
#endif 

nhưng tôi nhận được một lỗi use of undeclared identifier cho toto

ps: nếu tôi làm định nghĩa Preprocessor Macros trong Xcode, sau đó các giá trị được sử dụng, tôi là ghi đè và lưu trữ xong. Nhưng tôi muốn tạo một số bản dựng dựa trên các định nghĩa tiền xử lý khác nhau (có vẻ là một ý tưởng tốt hơn là tạo cấu hình hoặc sơ đồ xây dựng mới cho tôi)

+0

Dường như nó có hiệu quả đối với tôi. Bạn có thể cung cấp một dự án mẫu thể hiện vấn đề này không? – Jim

+0

Nhân tiện, tôi không đồng ý rằng các định nghĩa tiền xử lý là cách tiếp cận tốt nhất ở đây. Họ vốn có nhiều hạn chế hơn các lựa chọn thay thế. Bạn đã xem xét sử dụng một lược đồ, một cấu hình, nhưng có nhiều mục tiêu? – Jim

+1

tôi đã trải qua nhiều mục tiêu trong một dự án và ghét nó: quá nhiều hộp kiểm để kiểm tra bất kỳ lúc nào bạn đưa mã mới vào dự án. Nhưng có lẽ nó sẽ có ý nghĩa ở đây. –

Trả lời

2

Tôi phải sử dụng dấu ngoặc kép và xóa giá trị $. tôi đã có,

GCC_PREPROCESSOR_DEFINITIONS='$value ${e}', 

mà không làm việc, nhưng

GCC_PREPROCESSOR_DEFINITIONS="${e}" 

công trình.

đâu, e là biến bên trong một vòng lặp,

environments=("TEST1" "TEST2" "TEST3" "TEST4" "TEST5" "PROD") 
for e in "${environments[@]}" 
    do 
....... commands 
    done 

Nếu tôi sử dụng

GCC_PREPROCESSOR_DEFINITIONS='$value ${e}' 

Sau đó, tôi phải sử dụng như thế nào,

GCC_PREPROCESSOR_DEFINITIONS='$value ADHOC=1' 

này làm việc tại một trong xây dựng kịch bản.

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