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;
}

参考:https://www.cnblogs.com/fortunely/p/14587625.html

posted @ 2022-05-22 00:59  明明1109  阅读(4620)  评论(0编辑  收藏  举报