2017-01-31 8 views
-1

ありません、私はGNUコンパイラを使用して、私のC++コードをコンパイルしようとしているLinuxで次のMakefileエラー:ブースト/ regex.hpp:そのようなファイルやディレクトリは

を使用して
CXX=gcc #icpc 
RM=rm -f 
CPPFLAGS=-g -O3 -fopenmp 
CFLAGS= -Wall -c 
OPENMP = -fopenmp 
BIN = theVeecode_$(CXX) 

LIBS= -L /path-to-boost/boost_1_53_0/stage/lib/ -lboost_regex 

CPPSRCS=mathtools.cpp time_.cpp read_input.cpp vee_ao_calc.cpp vee_mo_calc.cpp write_int2e.cpp memory_check.cpp 
OBJS=$(subst .cpp,.o,$(CPPSRCS)) 
OBJS+=$(COBJS) 

all: $(BIN) 

$(BIN): $(OBJS) 
     $(CXX) main.cpp $(OPENMP) -o $(BIN) $(OBJS) $(LIBS) 

clean: 
     $(RM) $(OBJS) $(BIN) 

dist-clean: clean 
     $(RM) $(BIN) 

私はmakeコマンドを実行すると、私が手次のエラーメッセージ:

gcc -g -O3 -fopenmp -c -o read_input.o read_input.cpp 
read_input.cpp:9:27: error: boost/regex.hpp: No such file or directory 
read_input.cpp: In function 'void input::read_n_occ()': 
read_input.cpp:95: error: 'boost' has not been declared 
read_input.cpp:95: error: 'regex_search' was not declared in this scope 
make: *** [read_input.o] Error 1 

read_input.cppファイルは、ライブラリ・パス「/ P

#... // other includes 
#include <boost/regex.hpp> 
using namespace std; 

namespace xxx 
{ 
//some code here 
} 

で始まりますboost_1_53_0/stage/lib/"には、 libboost_regex.a、libboost_regex.soおよびlibboost_regex.so.1.53.0というファイルが含まれています。

コンパイラがライブラリファイルを見つけられない理由を理解できません。なぜ誰もそれが動作していないとどのようにそれを修正するためのアイデアを持っていますか?

ありがとうございます。

+1

は、ディレクトリが含まブーストを逃したことができますか? – P0W

+0

はい、そうです。以前は別のマシンで同じMakefileを使ってコードをコンパイルしていたので混乱しました。なぜそれがうまくいかなかったのかはわかりませんでした。とにかく、それは今働いている。 – user3244013

答えて

0

明らかに、問題はMakefileにありました。具体的には、ブーストライブラリを使用するパスは、ブーストを使用して.cppファイルをコンパイルする際には含まれませんでした。コンパイルの段階で明示的にライブラリを追加することによって、それを修正:次のように

%.o: %.cpp $(DEPS) 
     $(CXX) -c -o [email protected] $< $(CPPFLAGS) $(LIBS) 

は最後に、Makefileは次のとおりです。

CXX=gcc #icpc 
RM=rm -f 
CPPFLAGS=-g -O3 -fopenmp 
OPENMP = -fopenmp 
BIN = theVeecode_$(CXX) 

LIBS= -I /path-to-boost/boost_1_53_0/ 
LIBS+= -L /path-to-boost/boost_1_53_0/stage/lib/ -lboost_regex 

CPPSRCS=mathtools.cpp time_.cpp read_input.cpp vee_ao_calc.cpp vee_mo_calc.cpp write_int2e.cpp memory_check.cpp 
OBJS=$(subst .cpp,.o,$(CPPSRCS)) 
DEPS=Vector3.h mathtools.h memory_check.h read_input.h time_.h vee_ao_calc.h vee_mo_calc.h write_int2e.h 

%.o: %.cpp $(DEPS) 
     $(CXX) -c -o [email protected] $< $(CPPFLAGS) $(LIBS) 

$(BIN): $(OBJS) 
     $(CXX) main.cpp $(OPENMP) -o $(BIN) $(OBJS) $(LIBS) 

clean: 
     $(RM) $(OBJS) $(BIN) 

dist-clean: clean 
     $(RM) $(BIN) 
関連する問題