2016-04-13 16 views
0

私はダウンロードしてコンパイルは(bootstrap.shを使って、次の自分自身をboost_1_60_0指示)。私は自家製のものや他のものを使用しませんでした。それが私のインスタレーションがとてもうんざりしているように思えるかもしれません。ブースト&メイク

は何私は私のSzabo.hppに含めるしようとしていることはこれです:

#include <boost/math/special_functions/erf.hpp> 

私のメイクファイルはこのように書き:

LIB_FLAGS = -L/Documents/boost_1_60_0/stage/lib -lboost_math 
ALL_OBJECTS = main.o Gaussienne.o Grille.o Szabo.o 

all: $(ALL_OBJECTS) 
    g++ -o hydrogene $(ALL_OBJECTS) $(LIB_FLAGS) 

Gaussienne.o: Gaussienne.cpp 
    g++ -o Gaussienne.o -c Gaussienne.cpp -W -Wall -ansi 

main.o: Gaussienne.hpp Grille.hpp main.cpp Szabo.o 
    g++ -o main.o -c main.cpp -W -Wall -ansi 

Grille.o: Grille.cpp Gaussienne.cpp 
    g++ -o Grille.o -c Grille.cpp -W -Wall -ansi 

Szabo.o: Szabo.cpp Gaussienne.cpp 
    g++ -o Szabo.o -c Szabo.cpp -W -Wall -ansi 

clean: 
    rm -rf *.o 

mrproper: clean 
    rm -rf hydrogene 

私は++グラムからのリンクエラーを取得していないが、しかし、私が得ました:

In file included from Szabo.cpp:12: 
./Szabo.hpp:21:10: fatal error: 'boost/math/special_functions/erf.hpp' file not found 
#include <boost/math/special_functions/erf.hpp> 
     ^
1 error generated. 

この問題を解決する方法を教えてください。

LIB_FLAGS = -L/Users/devolution/Documents/boost_1_60_0/stage/lib -lboost_math_tr1 

I_FLAGS = -I /ユーザ/権限委譲/ドキュメント/ boost_1_60_0/ ALL_OBJECTS = main.o Gaussienne.o Grille.oサボー:事前に感謝

[OK]をのでどうやらこれ、それは動作しますが好きです。 o

all: $(ALL_OBJECTS) 
    g++ -o hydrogene $(ALL_OBJECTS) $(LIB_FLAGS) 

Gaussienne.o: Gaussienne.cpp 
    g++ -o Gaussienne.o -c Gaussienne.cpp -ansi ${I_FLAGS} 

main.o: Gaussienne.hpp Grille.hpp main.cpp Szabo.o 
    g++ -o main.o -c main.cpp -ansi ${I_FLAGS} 

Grille.o: Grille.cpp Gaussienne.cpp 
    g++ -o Grille.o -c Grille.cpp -ansi ${I_FLAGS} 

Szabo.o: Szabo.cpp Gaussienne.cpp 
    g++ -o Szabo.o -c Szabo.cpp -ansi ${I_FLAGS} 

.PHONY: clean mrproper 
clean: 
    rm -rf *.o 

mrproper: clean 
    rm -rf hydrogene 

I_FLAGSを渡す方法はありますか?

+0

コンパイラにそのファイルパスを見つける場所を伝える必要があります。適切な '-I'引数が必要です(' -L'引数がすでにあります)。 –

+0

ええ、私はそう思ったが、私はブーストフォルダのルートにフォルダが含まれていることを多くのブーストユーザーが参照してください、奇妙なことは私ではないので、私は実際に何を入れるかわからない。私は '-I/Documents/boost_1_60_0 /'と '-I/Documents/boost_1_60_0/boost'を試しましたが、うまくいきません。 – Devolution

+0

あなたのインクルードツリーのルートに' boost'フォルダがない(おそらくそうでないかもしれません)、あなたが '#include'で使うパスにそれを含めることはできません。あるいは、あなたがそれを使用できるようにディレクトリを作成します。 –

答えて

0

あなたはBoostの別々にコンパイルされたライブラリをコンパイルしました。これは素晴らしいですが、あなたのツールチェーンのインクルードパスにヘッダをコピーしませんでした。実際、Boostのほとんどはヘッダーのみのライブラリで構成されているので、これは間違いなくBoostをインストールする重要なステップです。

インターネットを使用して、シェルで次のコマンドを使用して、デフォルトのヘッダ検索パスを見つけることができるかもしれません私に語った:

gcc -x c++ -v -E /dev/null 

https://stackoverflow.com/a/19852298/560648

にあなたがそれを見つけ、ディストリビューションのコピーboostサブディレクトリにあります。

そして、はい、having home-brew install Boost for youくらいでした。 easy&hellip;おそらく1つのコマンド!