Bash 詹金斯:环境变量在CMake中不可用
我在Kubuntu 14.04.3上运行的Jenkins作业由两个构建步骤组成:Bash 詹金斯:环境变量在CMake中不可用,bash,cmake,jenkins-plugins,Bash,Cmake,Jenkins Plugins,我在Kubuntu 14.04.3上运行的Jenkins作业由两个构建步骤组成: 通过“执行shell”在bash中设置环境变量 执行“CMake构建”过程 我的CMake脚本非常依赖于系统,这意味着我完全使用了$ENV{UNIX\u ENVIRONMENT\u VARIABLE}命令 但问题是,我在第一步中设置的变量在第二步中无法被CMake看到。 我尝试了不同的解决方案: 通过“export VAR=VAL”通过“Execute shell”构建步骤设置变量 通过jenkins用户的.bas
$ENV{UNIX\u ENVIRONMENT\u VARIABLE}
命令
但问题是,我在第一步中设置的变量在第二步中无法被CMake看到。
我尝试了不同的解决方案:
所以我的问题是,前两种解决方案有什么问题?环境变量是每个进程(和子进程) 因此,假设“executeshell”运行自己的Shell,那么这些变量对于任何其他派生的进程都不可见 jenkins使用的
.bashrc
应该可以工作,假设生成的shell是一个交互式shell(几乎肯定不是)
请尝试.bash\u登录
也就是说,似乎无论什么
environject
都是更好的主意。您可以通过CMake调用传递环境变量。比如说
TADA=helloWorld cmake ..
可以在CMake脚本中作为
$ENV{TADA}
使用,但不能作为${TADA}
使用。cmake命令前面的位置很重要。但是这些方法通过“${CC}”使变量在cmake中可用,并且不等同于“$ENV{CC}”,对吗?@Tik0:no,如果通过-DCC=…添加变量,${CC}将是这种情况。。去做。请试一试。我仍然可能是错的。它不起作用,cmake将其解释为一个常见变量,正如我在评论中所说的那样。@Tik0:你是对的,我犯了一个错误,现在已经修复了。我测试了它,它对我有效。好的,现在你更正了你的答案。我认为这是非常明显的,但是现在您可以通过命令行调用cmake本身,并预先定义变量。这是可行的,但对于我的变量集来说,这不是最简单的方法。