linux - cmake 找不到环境变量

标签 linux bash ubuntu cmake ros

我正在使用 ROS Indigo 开发 Ubuntu 14.04,我需要使用 Geometry Tools Wild Magic 5 来开发一个包。

我通过如下修改 .bashrc 将 Wild Magic 文件夹的路径导出为环境变量:

export WM5_PATH=/home/user/catkin_ws/src/GeometricTools/WildMagic5/SDK

这样做是为了在我正在编码的包的 CMakeLists.txt 文件中指定头文件的位置:

include_directories(
    include
    $ENV{WM5_PATH}/Include/
)

之前,在同一个 cmake 文件中,我检查环境变量是否设置正确:

if (NOT DEFINED ENV{WM5_PATH})
    MESSAGE (FATAL_ERROR "Wild Magic Engine 5.14 missing")
endif()

现在,在使用 catkin build 构建包时,未找到环境变量(输入上面的 if)。但是通过在终端中使用 printenv 我可以看到环境变量 WM5_PATH 实际上就在那里。

我该如何解决这个问题?

最佳答案

我刚刚尝试了您的示例,它在我的 Ubuntu bash shell 中运行良好。

# export WM5_PATH=/home/user/catkin_ws/src/GeometricTools/WildMagic5/SDK
# cmake ..
-- Configuring done
-- Generating done
-- Build files have been written to: ...

所以我怀疑您的 cmake 可执行文件在另一个环境(例如 IDE)中运行。

要检查您的 CMake 将什么视为环境,您可以将以下内容添加到您的 CMakeLists.txt:

execute_process(
    COMMAND ${CMAKE_COMMAND} -E environment
)

引用

关于linux - cmake 找不到环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48408431/

相关文章:

Bash if [ -d $1] 为空的 $1 返回 true

bash - 如何在bash中使用cat小写大文件?

ubuntu - 打开文件时,vim 中的 molokai 错误

regex - 如何使用 sed 删除不包含模式的行

linux - 根据时间计算的文件名处理文件

mysql - 查找/删除大数据中的重复项

linux - 用shell脚本中的空行替换文件的一行?

linux - windows版本和linux版本有什么区别?

linux - 使用 sed 命令 shell 脚本替换包含空格的字符串

UNIX:如何更改目录中所有文件中字符串的所有实例