Мне нужно получить значение переменной среды 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()
называется.
Что мне не хватает?
Ваш код кажется правильным — поэтому вы, скорее всего, вызываете свою программу в среде, где 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