Vim 和环境模块:通过 :make 编译不知道 boost



我的C++项目使用 CMake 从 boost 创建用于编译和外部库的生成文件。我选择的编辑器是vim。在命令行中运行$ make可以工作,但在 vim 中运行:make在链接阶段出现问题并返回:

/usr/bin/ld: cannot find -lboost_system    

但是,我也使用:make install将我的项目放置在测试和使用该程序的$HOME/usr/stow/<prog>中。因此,我正在寻找一种解决方案来使链接阶段成功。

更多详情:

它位于 src 外构建目录中。因此,我配置了makeprg

:set makeprg=make -C ../build/Release/

更新的 boost 版本通过我在项目中依赖的环境模块项目在系统上安装并提供。较新的加速版本可以通过以下方式加载

$ module load boost

我已将此行添加到我的$HOME/.profile中,这样我就不必在每次编译时都调用它。

我已经检查了问题 (G)VIM 使用与我的系统讨论 vim 中使用的环境变量不同的$PATH。

更新:问题只发生在从窗口管理器(gnome2)启动的gvim中,而不是从命令行/bash启动的(g)vim。

如果它在命令行中工作,但在 vim 中不起作用,请查看您的环境中有何不同

:!env | sort > env-vim

然后

$ env | sort | diff env-vim -

很可能是某些东西正在设置LD_LIBRARY_PATH为您的 boost 库包含一个非标准目录,而该目录没有显示在 vim 的子壳环境中。也许您是从桌面图标而不是命令行启动 vim 的?(如果是这种情况,从命令行进行的 vim/:make 将是一个有趣的测试)。

要将变量放入 vim 子外壳中,请将其添加到 ~/.vimrc

let $LD_LIBRARY_PATH="*your library path*"  

我会发表评论而不是回答,但我还没有获得这种能力。既然昨天有人问,我就开枪了。

相关内容

最新更新