我的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*"
我会发表评论而不是回答,但我还没有获得这种能力。既然昨天有人问,我就开枪了。