О getenv () в OSX

Мне нужно получить значение переменной среды ANDROID_HOME на OSX (установлен в .bash_profile). Я могу проверить его существование, набрав echo $ANDROID_HOME в терминале.

Вот код: (проект Xcode)

void testGetEnv(const string envName) {

char* pEnv;
pEnv = getenv(envName.c_str());
if (pEnv!=NULL) {
cout<< "The " << envName << " is: " << pEnv << endl;
} else {
cout<< "The " << envName << " is NOT set."<< endl;
}
}

int main() {
testGetEnv("ANDROID_HOME");
}

Выход всегда The ANDROID_HOME is NOT set., Я не думаю, что я использую getenv() правильно здесь. Либо это, либо .bash_profile не действует, когда getenv() называется.

Что мне не хватает?

0

Решение

Ваш код кажется правильным — поэтому вы, скорее всего, вызываете свою программу в среде, где ANDROID_HOME действительно не установлен. Как вы начинаете свою программу?

Я изменил ваш исходный код, чтобы он был на самом деле компилируемым, и он отлично работает в моей системе OS X:

#include <iostream>
#include <string>
#include <stdlib.h>

using namespace std;

void testGetEnv(const string envName) {

char* pEnv;
pEnv = getenv(envName.c_str());
if (pEnv!=NULL) {
cout<< "The " << envName << " is: " << pEnv << endl;
} else {
cout<< "The " << envName << " is NOT set."<< endl;
}
}

int main() {
testGetEnv("ANDROID_HOME");
}

Скомпилируйте это с:

g++ getenv.cpp -o getenv

Теперь запустите:

./getenv
The ANDROID_HOME is NOT set.

export ANDROID_HOME=something
./getenv
The ANDROID_HOME is: something
3

Другие решения


По вопросам рекламы [email protected]