2011-12-29 1 views
3

Я использую Xcode 3.2.6, MacOSX.Xcodebuild не может получить значения среды из файла проекта?

У меня есть глобально видимые настройки среды:

ICU_SRC=~/Documents/icu/source 

Это действительно установочная среда, это установить время входа в системе. Когда я открываю терминал, он там.

В моем проекте, под Header Search Paths Я добавил это:

$(ICU_SRC)/i18n 
$(ICU_SRC)/common 

Эти расширения правильно, когда я компилирую внутри IDE. Когда я смотрю на результаты сборки, я вижу это:

-I/Users/eric.grunin/Documents/icu/source/i18n 
-I/Users/eric.grunin/Documents/icu/source/common 

Когда я строю из командной строки, однако, не удается. То, что я вижу это:

-I/i18n 
-I/common 

Вот команда, я использую для компиляции:

/USR/бен/окр -i xcodebuild -project my_project.xcodeproj -target "my_program" - конфигурация Release -sdk macosx10.6 build

Что я делаю неправильно?

Edited добавить:

Apple, объясняет Setting environment variables for user processes

ответ

0

Настройки "окружающей среды" набор с помощью Xcode не действительно переменные окружения; они известны только Xcode. Если вы хотите, чтобы они были на самом деле переменными среды, видимая из командной строки, вы должны использовать следующую команду оболочки:

[email protected] ~ $ export ICU_SRC="~/Documents/icu/source" 
+0

Спасибо, но это действительно настройка среды, я установил ее в '~/.MacOSX/environment.plist', и она видна в терминале. Но xcodebuild, похоже, думает, что это что-то другое. – egrunin

+0

О, извините. Я не знал об этом. –

0

По моим экспериментам, xcodebuild не реально подобрать переменные среды от Shell. Для того, чтобы Xcode честь переменных окружений, мы должны передать их в явном виде:

export ICU_SRC_ENV=~/Documents/icu/source 
    /usr/bin/env -i xcodebuild -project my_project.xcodeproj \ 
          -target "my_program" \ 
          -configuration Release \ 
          -sdk macosx10.6 \ 
          build \ 
          ICU_SRC=$ICU_SRC_ENV 

Команда выше проходит системные переменные окружения xcodebuild переменного окружения. Вы можете ссылаться на него в своей xcodeproj на нотацию $ (ICU_SRC). BTW, я использовал разные имена, поэтому мы можем различать две переменные, но вы также можете использовать одно и то же имя переменной.

~/.MacOSX/environment.plist действительно эквивалентен строке экспорта в моем примере. Это только для Shell.

Надеюсь, что это поможет.

+0

Я попробую это, спасибо! – egrunin

+1

Кажется, что xcodebuild * делает * собирает хотя бы CC из своей среды (оболочка, из которой вы ее запускаете, например), хотя ... (что в моем случае есть * не *, что я хочу;) Вздох, почему не может быть документально зафиксировано. – tml

1

Иногда это работает лучше, если вы указать окр вары перед команду xcodebuild, как в

# NOT this 
xcodebuild ... options ... SOMEVAR=somevalue 

# But this instead works better 
SOMEVAR=somevalue xcodebuild ... options ... 

Это особенно хорошо работает для PRODUCT_NAME при работе с cocoapods.

+1

Это кажется невероятно сумасшедшим, но на самом деле это работает! –

1

Я знаю, что этот вопрос составляет 2 года, но он по-прежнему имеет значение. Я просто провел день, отслеживая тот факт, что xcodebuild смотрит на переменную окружения CC (если она установлена) и, вероятно, сделает неправильную вещь. Я использую xcodebuild версии 6.1.1 (версия для сборки 6A2008a).

Я получаю ошибку, если CC будет выставлено:

PBXTargetBuildContext.mm:1690

Детали: commandPath должен быть строкой, бит это ноль

подсказки: нет

Надеюсь, это поможет кому-то другому.

+0

Понятия не имею, если это правильно (я больше не в этом проекте), но спасибо за вклад. – egrunin

+0

Большое спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^