CMake 调用环境变量
目录
CMake调用环境变量
查看环境变量
使用$ENV{NAME}指令,例如,
message(STATUS "HOME dir: $ENV{HOME}")
设置环境变量
使用set函数 + ENV指令
set(ENV{变量名} 值)
注意:
1)读环境变量时,需要加上\(;写环境变量时,不需要加\)。
2)cmake文件内定义的环境变量仅用于cmake编译过程,不能用于目标程序。
示例
CMakeLists.txt
message("myenvvar: $ENV{myenvvar}")
# 定义环境变量myenvvar
set(ENV{myenvvar} "123")
message("myenvvar: $ENV{myenvvar}")
运行cmake结果
myenvvar:
myenvvar: 123
C程序中调用环境变量
回顾在C程序中,如何调用环境变量
使用getenv,查看环境变量
#include <stdlib.h>
// 返回指向value的指针,若未找到则为NULL
char *getenv(const char *name);
使用putenv,设置环境变量
#include <stdlib.h>
// 以 "var_name=value"的形式设置环境变量
int putenv(char *string);
使用setenv,设置环境变量
仅用于Unix/Linux,不适用于Windows
#include <stdlib.h>
// 通过name, value参数来设置环境变量, name = value
// 参数overwrite为0时, name对应值不会改变, 返回0; overwrite非0时, name对应值才会改变, 成功返回0, 失败返回-1并设置errno
int setenv(const char *name, const char *value, int overwrite);
使用unsetenv,删除环境变量
仅用于Unix/Linux,不适用于Windows
#include <stdlib.h>
int unsetenv(const char *name);
示例
如果是在Windows平台,可能还需要添加宏定义_CRT_SECURE_NO_WARNINGS,防止使用getenv带来的警告。
#include <stdlib.h>
int main()
{
char* s;
s = ::getenv("x");
printf("case 1 x = %s\n", s);
::putenv("x=456"); // 注意"="前后不能有空格
s = ::getenv("x");
printf("case 2 x = %s\n", s);
return 0;
}