CMake如何获取HOSTNAME环境变量

6

我在Linux Ubuntu中定义了HOSTNAME和USER作为环境变量。

echo $USER
pvicente
echo $HOSTNAME
glace

我使用以下命令获取CMakeLists.txt中的变量:

message("-- USER environment variable is set to: " $ENV{USER})
message("-- HOSTNAME environment variable is set to: " $ENV{HOSTNAME})

但是检测到的是用户而不是主机名。
输出为:
-- USER environment variable is set to: pvicente
-- HOSTNAME environment variable is set to:

主机名和用户变量在哪里定义? - Antwane
1
@MattSchuchard HOSTNAME是一个环境变量... - 123
2个回答

13

您可以使用以下命令查看 CMake 看到的环境变量:

```

echo $ENV_VAR_NAME

```

注意:请将 `$ENV_VAR_NAME` 替换为您要检查的环境变量名称。
$ cmake -E environment
它将我的主机名存储在名为NAME的环境变量中。因此,请尝试以下操作:
message("-- USER environment variable is set to: " $ENV{USER})
message("-- HOSTNAME environment variable is set to: " $ENV{NAME})

但官方的跨平台CMake方法是:

cmake_host_system_information(RESULT _host_name QUERY HOSTNAME)
message("-- _host_name variable is set to: " ${_host_name})

参考资料


为什么要使用 _host_name 而不是 host_name - user2023370
只是为了澄清,对于遇到与我相同问题的人:当我将cmake_host_system_information放在project(...)命令之后时,它才能正确地工作。 - TheTomer

1

注意:我不使用cmake,所以我做了一些谷歌搜索,并得出以下结论...比评论中可以容纳的内容要多一些...

根据第一个帖子 @ 这个 link:

  • sh -c echo \$HOSTNAME => ...nothing... ; HOSTNAMEsh shell 下没有被(自动)设置
  • bash -c echo \$HOSTNAME => glace ; HOSTNAMEbash shell 下已被(自动)设置
  • cmakesh shell下运行命令,因此cmake将无法使用HOSTNAME
在同一个链接的底部建议使用site_name()函数…
SITE_NAME(mySite)             => obtain hostname and place in variable 'mySite'
MESSAGE(mySite='${mySite}')

...这似乎与(稀疏的)文档(site_name() documentation)相符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接