1

私のC++プロジェクトでは、 CMakeを使用して、 boostからコンパイルおよび外部ライブラリのmakefileを作成しています。私が選んだエディターはvimです。$ makeコマンドラインでの実行は機能しますが:make、vimではリンク段階で問題が発生し、次のように戻ります。

/usr/bin/ld: cannot find -lboost_system    

ただし、プログラムをテストして使用:make installする場所にプロジェクトを配置するためにも使用します。$HOME/usr/stow/<prog>したがって、私はリンク段階を成功させるための解決策を探しています。

詳細:

これは、src外のビルドディレクトリにあります。したがって、私は設定しましたmakeprg

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

最新のブーストバージョンがインストールされ、プロジェクトで依存している環境モジュールプロジェクトを介してシステムで利用できるようになります。新しいブーストバージョンは、

$ module load boost

この行をに追加した$HOME/.profileので、コンパイルするたびに呼び出す必要はありません。

(G)VIMは、 vimで使用されている環境変数について説明しているシステムとは異なる$PATHを使用しているという質問を確認しました。

更新:この問題は、ウィンドウマネージャー(gnome2)から開始されたgvimでのみ発生し、コマンドライン/ bashから開始された(g)vimでは発生しませんでした。

4

1 に答える 1

3

コマンドラインでは機能するが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*"  

答えるのではなくコメントしたかったのですが、まだその能力を獲得していません。昨日聞かれたので撃ちました。

于 2013-02-02T18:08:06.103 に答える