【问题标题】:CMake get HOSTNAME environment variableCMake 获取 HOSTNAME 环境变量
【发布时间】:2018-02-17 13:52:31
【问题描述】:

我将 HOSTNAME 和 USER 都定义为环境变量(Linux Ubuntu)

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 而不是 HOSTNAME

输出是

-- USER environment variable is set to: pvicente
-- HOSTNAME environment variable is set to:

【问题讨论】:

  • HOSTNAME 和 USER 变量在哪里定义?
  • @MattSchuchard HOSTNAME 是一个环境变量...

标签: linux bash ubuntu cmake environment-variables


【解决方案1】:

您可以检查 CMake 确实看到了哪些环境变量

$ 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
  • 只是为了澄清遇到与我相同的问题的任何人:cmake_host_system_information 只有在我将它放在 project(...) 命令之后才能正常工作。
【解决方案2】:

注意:我不使用cmake,所以我做了一些谷歌搜索并想出了以下内容......比我可以放入评论的内容更多......

根据第一个帖子@这个link

  • sh -c echo \$HOSTNAME => ...什么都没有... ; HOSTNAME不是 (自动)在sh shell 下设置
  • bash -c echo \$HOSTNAME => glace ; HOSTNAME (自动)在bash shell 下设置
  • cmakesh shell 下运行命令,所以HOSTNAMEcmake 不可用

在同一链接的底部,建议使用site_name() 函数...

SITE_NAME(mySite)             => obtain hostname and place in variable 'mySite'
MESSAGE(mySite='${mySite}')

...似乎与(稀疏)文档(site_name() documentation)相吻合

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多