ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CMake 调用环境变量

2022-05-22 01:34:27  阅读:217  来源: 互联网

标签:调用 CMake name myenvvar getenv char ENV 环境变量


目录

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

标签:调用,CMake,name,myenvvar,getenv,char,ENV,环境变量
来源: https://www.cnblogs.com/fortunely/p/16296762.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有