2013-03-29 23 views
8

Tôi đang cố gắng đặt macro #define khi thực hiện tạo dòng lệnh bằng xcodebuild và không có may mắn.Đặt #define từ dòng lệnh trong xcode 4.6

Tôi đã thử -DMYMACRO=1MYMACRO=1 mọi thứ khác mà tôi có thể nghĩ và không hoạt động.

Làm cách nào để bạn đặt #define từ dòng lệnh?

Trả lời

25

Roger,

gì bạn đang tìm kiếm là một cách để thiết lập GCC_PREPROCESSOR_MACROS qua công cụ dòng lệnh xcodebuild. Man page của xcodebuild cho thấy định dạng để áp dụng các thiết lập này, tuy nhiên phần SYNOPSIS chỉ đề cập đến điều này như "thiết lập = giá trị ..."

xcodebuild [-project projectname] -scheme schemename [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...] [-userdefault=value ...] 
xcodebuild -workspace workspacename -scheme schemename [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...] [-userdefault=value ...] 

Cuối cùng, bạn có khả năng thiết lập bất kỳ của các giá trị cài đặt xây dựng trực tiếp trên dòng lệnh bằng cách sử dụng định dạng này và biết tên thiết lập xây dựng thực tế mà bạn muốn thay đổi. Đương nhiên, điều này sẽ trả lời câu hỏi ...

Làm cách nào để tìm Tên thiết lập bản dựng?

Rất vui khi bạn được hỏi! Thanh bên của Xcode 4 là nơi dễ nhất để tìm kiếm tên cài đặt xây dựng dòng lệnh thực tế.

Annotated Build Settings Screen Clip

Khi tìm kiếm một tên thiết xây dựng, Quick Help Thanh tra Xcode 4 của tiện ích sidebar là nơi để đi tìm.

  1. Truy cập màn hình Cài đặt xây dựng của dự án.
  2. Đảm bảo Thanh bên (những gì Xcode gọi là 'Tiện ích') hiển thị bằng cách nhấp vào nút 'Tiện ích' bên cạnh nút Trình tổ chức ở góc trên bên phải của Xcode.
  3. Trong thanh bên Tiện ích, hãy đảm bảo 'Trình kiểm tra trợ giúp nhanh' hiển thị.

Hoặc, sử dụng Option + Command + 2 để hiển thị thanh tra trợ giúp nhanh trực tiếp!

Cuối cùng bạn đã sẵn sàng để tìm xây dựng thiết lập của bạn:

  1. Hoặc thực hiện tìm kiếm cho cài đặt bạn muốn thay đổi hoặc di chuyển qua danh sách các build thiết lập xây dựng.
  2. Nhấp vào cài đặt xây dựng bạn quan tâm và quan sát cập nhật Trình kiểm tra trợ giúp nhanh.
  3. Phần 'Khai báo' của Thanh tra trợ giúp nhanh hiển thị tên cài đặt xây dựng dòng lệnh bạn muốn sử dụng.

Trong trường hợp của Preprocessor Macros cài đặt bạn ban đầu được hỏi về, cài đặt đó là:

GCC_PREPROCESSOR_DEFINITIONS

kéo này lại với nhau cho câu hỏi ban đầu của bạn, bạn có thể đặt build này đặt trên dòng lệnh đơn giản bằng cách cung cấp SETTING_NAME = 'DESIRED_VALUE' cùng với phần còn lại của lệnh xcodebuild của bạn. Trong trường hợp của một dự án nhỏ test nhanh Tôi ném lại với nhau gọi là 'TestApp' nơi tôi muốn Preprocessor Macro 'BKM' được thiết lập để giá trị 1, lệnh xcodebuild của tôi sẽ là:

xcodebuild -project TestApp.xcodeproj - sơ đồ TestApp GCC_PREPROCESSOR_DEFINITIONS = '$ {kế thừa} BKM = 1'

Tại sao bạn lại gắn $ {inherited} vào đó?

Nếu bạn đang sử dụng Macro tiền xử lý thì bạn có thể có nhiều hơn một macro mà bạn đang sử dụng. Một số trong đó bạn có thể không muốn thay đổi từ dòng lệnh, nhưng vẫn được mã hóa vào các thiết lập xây dựng đích hoặc của dự án. Việc sử dụng '$ {inherited}' chỉ thị xcodebuild cũng sử dụng các cài đặt xây dựng được định nghĩa ở mức cao hơn thay vì chỉ sử dụng các cái mà chúng ta đã định nghĩa trong lệnh xcodebuild. Trong hầu hết các trường hợp, bạn sẽ muốn sử dụng $ {inherited} để lấy bất kỳ giá trị được định cấu hình nào khác mà bạn đã thiết lập.

Tôi có phải bọc giá trị trong dấu nháy đơn không?

Nếu bạn muốn đặt nhiều giá trị, thì bạn sẽ cần bọc giá trị trong dấu nháy đơn nếu bạn đặt hai hoặc nhiều Macro tiền xử lý từ dòng lệnh, macro thứ 2 sẽ được hiểu là cài đặt xây dựng thay vì Macro tiền xử lý ... không hoàn toàn đúng hành vi. Các dấu nháy đơn hoạt động như một cách để thu thập nhiều giá trị cho một cài đặt cùng nhau. Trong trường hợp lệnh xcodebuild mẫu của tôi, tôi muốn có xcodebuild sử dụng bộ Kế thừa các macro tiền xử lý cùng với thiết lập BKM cụ thể của tôi vì vậy tôi đã bọc giá trị trong các dấu nháy đơn để báo cho xcodebuild xem chúng là tiền xử lý Macros.

Điều này có hoạt động với Không gian làm việc không?

Tuyệt đối! Chỉ cần sửa đổi lệnh để sử dụng tham số -workspace thay vì tham số -project và bạn sẽ được kinh doanh!

+1

Lưu ý: Sử dụng dấu nháy đơn, chứ không phải gấp đôi – Quanturium

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