2016-04-30 11 views
0

私はC++にはかなり新しいです。 C++コードのコンパイルや実行中に、さまざまなファイルやライブラリのパスを提供するための一般的な方法として考えられているものが不思議でした。C++でコンパイルするときにライブラリのパスを提供するための良い方法

例: 私のシステムの一部の場所にBoostライブラリがインストールされています。呼び出すことができ、それは私がコードを実行しながら、入力ファイルについても、同様

c++ -I LongpathWhichisX/to/boost_1_60_0 example.cpp -o example 

に長いパスを入力しなければならない何かを実行するために をX。

改善の方法はありますか?環境変数Yを作成することは可能ですか?パス 'X'を参照します。そして、私たちはコード

c++ -I Y/to/boost_1_60_0 example.cpp -o example 

答えて

1

最良の方法は、ビルドツールを使用することです。たとえば、Makeを使用できます。すべてのインクルードパス(およびその他のオプション)をMakefileに定義します。コンソールでは、makeを呼び出してプロジェクトを構築するか、make runのようなプロジェクトを実行するだけです。

0

をコンパイルするには、次のコマンドを使用することができ、通常の方法は、あなたが必要なすべてのパスを指定し、適切な変数にオプションをコンパイルすることができMakefileを作ることです。

Makefileを必要とせず、コマンドラインからコンパイラを実行したい場合は、CPATH環境変数を使用して、ファイルをインクルードするパスのコロン区切りリストを指定することができます。

0

これは広い質問ですが、他の回答が最も重要なステップです。 makeのようなビルドツールを学ぶことは不可欠です。なぜなら、開発中にプロジェクトを構築したり、後でビルドすることが容易になるからです。現代のプログラミング時代には、これでは十分ではありません。あなたがBoost(多くのプラットフォームをターゲットにしている)のようなものを使用しているなら、おそらくあなたのビルドをクロスプラットフォームにしたいと思うでしょう。このためには、cmakeまたはautotoolsのいずれかを使用し、両方にBoostライブラリ(および他のもの)を見つけるのをはるかに簡単にするスクリプトがあります。

他のビルドシステムは、私の意見では痛みを伴い、Linuxディストリビューションのメンテナーの悩みです。 CMakeはこれまで昔話の中にあったが、現在では広く受け入れられている。 CMakeは、各プラットフォームにネイティブビルドシステムを提供しようとするので、オペレーティングシステム(WindowsとUnixes)間でクロスプラットフォームプロジェクトを構築することを目標にしています(WindowsのVisual Studio、すべてのUnixのMake、マック)。 autotoolsははるかに深いところでUnix環境をターゲットにしています(Windowsでは少し時間がかかりますが、組み込みのUnixシステムを、より柔軟なハイエンドUnixサーバシステムに移行することができます)。

注:自動ツールのクロスコンパイルのサポートは、他のソリューションよりも優れています。 Arm Linuxのためにクロスコンパイルする必要があるものをダウンロードすると、私はいつもうんざりしています。 Funnily十分に、ブーストはこれらの一つです。

これは、少し長めの答えです。要約すると、ネイティブ開発用のビルドシステムを学ぶことが不可欠です。それはあなたのスキルセットの一部であり、あなたがそのスキルを持つまでは、オープンソースプロジェクトやクローズドソースプロジェクトを開発している雇用主には本当に貢献できません。

関連する問題