2013-03-27 5 views
0

makefile을 수정하고 프로젝트를 컴파일하려고합니다. 그러나 그것은 첫 번째 단계에서만 실패하고 있습니다. 컴파일 WRT에 대한컴파일 오류를 해결하는 방법 - makefile

심지어 내가 지정한 패턴 규칙 : -
http://www.gnu.org/software/make/manual/make.html#Static-Usage

메이크 파일은 다음과 같습니다 -

# topdir for wxWidgets base 
top_builddir = /opt/wxgtk 
EXTRALIBS = -pthread -lz -ldl -lm 
LDLIBS = ${APPEXTRALIBS} ${top_builddir}/lib/libwx_baseu-2.8.a ${EXTRALIBS} 
CXX   = c++ 

CXXFLAGS = -g -O0 -pthread -I/usr/include/SDL -D_REENTRANT -Wall -Wno-ctor-dtor-privacy 
CPPFLAGS = -D__WXDEBUG__ -I${top_builddir}/wx/include/base-unicode-release-static-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 
CFLAGS = ${APPEXTRACFLAGS} ${CPPFLAGS} -O2 -MMD -pthread -Wall 
CFLAGS += -DLINUX 

CANALOBJS =  ../../common/listenthread_unix.o ../../common/clientthread_level1_unix.o ../../common/devicethread_unix.o \ 
     ../../common/canalshmem_level1_unix.o ../../common/clientlist.o ../../common/controlobject.o \ 
     ../../common/devicelist.o ../../common/udpreceivethread_unix.o ../../../vscp/common/vscp.o \ 
     ../../common/clientthread_level2_unix.o ../../common/canalshmem_level2_unix.o \ 
     ../../common/tcplistenthread.o 
CANALHDRS = ../../common/clientlist.h ../../common/controlobject.h ../../common/devicelist.h \ 
     ../../common/canal.h ../../common/canaldlldef.h \ 
     ../../common/version.h ../../common/canal_unix_ipc.h ../../common/CanalShMem_level1_unix.h \ 
     ../../common/CanalShMem_level2_unix.h ../../common/clientthread_level1_unix.h ../../common/clientthread_level2_unix.h 
PROJOBJS = ../../../common/dllist.o ../../../common/configfile.o ../../../common/crc.o 
PROJHDRS = ../../../common/dllist.h ../../../common/configfile.h 
OBJS  = canald.o 
HDRS  = canald.h 

all:  canald 

# Build the Linux executable 
canald:  $(OBJS) $(HDRS) $(CANALOBJS) $(CANALHDR) $(PROJOBJS) $(PROJHDRS) 
     $(CXX) -o canald $(OBJS) $(CANALOBJS) $(PROJOBJS) -L$(LIBS) $(LDLIBS) 

$(OBJS) $(CANALOBJS) $(PROJOBJS):%.o: %.cpp 
     $(CXX) -c $(CFLAGS) $< -o [email protected] 

오류가 난 점점 오전 : -

make 
make: *** No rule to make target `canald.cpp', needed by `canald.o'. Stop. 

이 오류를 해결하는 방법을 제안하십시오.

편집 : -------

파일이 나는 위치를 다음에 wxgtk를 설치 한 오류

vscpd.cpp:47:19: fatal error: wx/wx.h: No such file or directory 
compilation terminated. 
make: *** [vscpd.o] Error 1 

다음 ... 그 컴파일 누락 ...하지만 점점되었습니다 ---

/opt/wxgtk 

의 .profile을 수정 : -

PATH = $PATH:/opt/wxgtk 
export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/opt/wxgtk/lib:$LD_LIBRARY_PATH 

만들기는

#include<wx/wx.h> 

어떻게 그것을 해결하기 위해 찾을 수 없습니다?

+4

현재 디렉토리에서'canald.cpp'를 사용할 수 있습니까? –

+0

감사합니다 ... 내 게시물을 편집했습니다 ... 제발 제안하십시오. – Katoch

+0

-I 플래그를 사용하여 비표준 위치의 헤더 파일을 가리 킵니다. –

답변

1

은 포함 경로를 직접 지정하는 대신 wx-config을 사용해야합니다. this answer.

CFLAGS의 일부로 CPPFLAGS을 사용하면 CXXFLAGS을 사용하지 말고 메이크 파일을 사용하는 것이 이상합니다. 따라서 귀하의 경우 호출로 CPPFLAGS 정의를 대체해야합니다. 더 나은

WX_CONFIG := /opt/wxgtk/bin/wx-config 
CPPFLAGS := $(shell $(WX_CONFIG) --cxxflags) 

CPPFLAGS 제거하고이 같은 CXXFLAGS을 정의하고 사용하세요.

또한 당신의 LDLIBS 너무 wx-config를 사용하는 업데이트 :

LDLIBS := ${APPEXTRALIBS} $(shell $(WX_CONFIG) --libs) 

(EXTRALIBS는 일반적으로 모두 더 이상에 필요하지 않을한다).

관련 문제