2012-03-30 23 views
5

Ben kesinlikle yüklemek ve benim projede jsoncpp kütüphanesini kullanmak için bu belgeleri takip ettim: jsoncpp READMEJSON-CPP nasıl kullanılır?

Ama hala derleme ile bu sorun var: Ben kullanmaya çalışıyorum ne zaman

g++ -W -Wall -Werror -c -o src/ModConnection.o src/ModConnection.cpp src/ModConnection.cpp:15:23: fatal error: json/json.h: No such file or directory compilation terminated.

O var olur

CXX  =  g++ 
NAME =  bin/server 
SRCS =  ./src/ModConnection.cpp\ 
       ./src/unixNetwork.cpp 
OBJS =  $(SRCS:.cpp=.o) 
CXXFLAGS +=  -W -Wall -Werror 
LDFLAGS =  -L ./src/jsoncpp-src-0.5.0/buildscons/linux-gcc4.5.1/src/lib_json/libjson_linux-gcc-4.5.1_libmt.a -I src/jsoncpp-src-0.5.0/include 
RM  =  rm -f 
$(NAME) :  $(OBJS) 
$(CXX) $(LDFLAGS) -o $(NAME) $(OBJS) 

all  :  $(NAME) 

clean : 
       $(RM) $(OBJS) 

fclean :  clean 
       $(RM) $(NAME) 

re  :  fclean all 

.PHONY :  all clean fclean re 

Teşekkür: Burada

#include <json/json.h> benim Linux Makefile olduğunu yardım için

+0

"Yapılandırma/Test Etme" bölümü (bağlandığınız README kaynağından), kitaplığı oluşturmak için python scons.py platformunu kullanmanız gerektiğini söyler, ancak bir "Makefile" görüntülüyorsunuz . Uygulamanız için oluşturduğunuz oluşturma komut dosyası mı, yoksa jsoncpp kütüphanesi mi? –

cevap

3

LDFLAGS değişkeninizde jsoncpp için include dizinini belirtiyorsunuz, ancak bunlar bireysel cpp dosyalarını önceden derleyene kadar kullanılmıyor. CXXFLAGS gibi derleme satırlarına eklenen bayraklarda, bir yere -I src/jsoncpp-src-0.5.0/include bölümünü koymanız gerekir.

Bir bit genişletmek için, bireysel .cpp dosyalarınızı oluşturmak için örtülü kurallar kullanmalısınız, ardından uygulamanızı bu nesnelerden oluşturmak için belirli bir hedefi vardır.

fazla bilgi için GNU Make Catalog of Rules bakınız, ancak kullandığınız bir buradadır:

Compiling C++ programs n.o is made automatically from n.cc, n.cpp, or n.C with a recipe of the form $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c . We encourage you to use the suffix ‘.cc’ for C++ source files instead of ‘.C’.

Düzenleme: Şimdi bağlama hataları için.

Bu sorunları alıyorsunuz çünkü bağlayıcı, aradığınız işlevlerin gerçek uygulamalarını bulamıyor.

İlk olarak, -L yönergesinin bir kütüphaneye değil bir klasöre işaret etmesi gerekir. -L, kütüphaneler için bir arama yolu belirler. Jsoncpp derlemesinin oluşturulduğu klasöre ayarlanmalıdır. Ardından, kütüphaneyi kendiniz bağlamanız gerekir. Bu kitaplık adı devasadır, ancak LDFLAGS'a -l json_linux-gcc-4.5.1_libmt eklenmesi işlemi yapmalıdır. -l (daha düşük olan) bağlantı kurmak için gerçek bir kitaplık ayarlar.

+0

Merhaba Andre, 'CHECK' hedefi ile inşa etmek için scons.py komut dosyasını kullanıyorum ve hepsi de test + test ile tamam. Bu benim MAKEFILE'im. –

+0

Merhaba Collin, -I hatlarını CXXFLAGS içine koydum ve burada aldığım yeni hatalar var: ' ./src/ModConnection.o: 'Ana fonksiyon': ModConnection.cpp :(. Text + 0x16): 'Json :: Value :: Value (Json :: ValueType)' için tanımlanmamış başvuru ' ' –

+0

Şimdi, derlememde Collins Hokey tavsiyelerini izlediğimden beri hatam yok. bunu ana programımda yazıyor: Json :: Value root; 'Her zaman bu hatayı alıyorum:' ModConnection.cpp :(. text + 0x16): 'Json :: Value :: Value (Json :: ValueType)) ' ModConnection.cpp :(. Text + 0x27): tanımsız başvuru' Json :: Value :: ~ Value() '' –