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

问题描述 投票:0回答:1

我的 C++ 项目使用 CMake 创建用于编译的 makefile 和来自 boost 的外部库。我选择的编辑器是 vim。 在命令行中运行

$ make
可以工作,但在 vim 中运行
:make
在链接阶段会出现问题并返回:

/usr/bin/ld: cannot find -lboost_system    

但是,我也使用

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

更多详情:

它位于 out-of-src build 目录中。因此我配置了

makeprg

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

安装了更新的 boost 版本,并通过我在项目中依赖的环境模块项目在系统上可用。可以通过

加载较新的boost版本
$ module load boost

我已将此行添加到我的

$HOME/.profile
中,这样我就不必每次编译时都调用它。

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

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

cmake vim linker environment-modules
1个回答
3
投票

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

:!env | sort > env-vim

然后

$ env | sort | diff env-vim -

可能是设置了 LD_LIBRARY_PATH 以包含 boost 库的非标准目录,并且该目录没有显示在 vim 的子 shell 环境中。也许您是从桌面图标而不是命令行启动 vim? (如果是这样的话,命令行中的 vim / :make 将是一个有趣的测试)。

要将变量添加到 vim 子 shell 中,请将其添加到 ~/.vimrc

let $LD_LIBRARY_PATH="*your library path*"  

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

© www.soinside.com 2019 - 2024. All rights reserved.