1

我的 C++ 项目使用CMake为来自boost的编译和外部库创建 makefile 。我选择的编辑器是vim$ make在命令行中运行有效,但:make在 vim 中在链接阶段出现问题并返回:

/usr/bin/ld: cannot find -lboost_system    

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

更多详细信息:

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

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

通过我在项目中依赖的Environment Modules Project安装了更新的 boost 版本并在系统上可用。可以通过以下方式加载较新的增强版本

$ module load boost

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

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

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

4

1 回答 1

3

如果它在命令行中有效,但在 vim 中无效,请查看您的环境有什么不同

:!env | sort > env-vim

然后

$ env | sort | diff env-vim -

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

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

let $LD_LIBRARY_PATH="*your library path*"  

我会发表评论而不是回答,但我还没有获得这种能力。由于昨天被问到,我给了它一枪。

于 2013-02-02T18:08:06.103 回答