다른 디렉토리에 다른 소스 파일에서 메이크 파일로 컴파일 할 수 없습니다 leveldb.hpp ". leveldb.cpp에 "leveldb.hpp"가 포함되어 있습니다.내가이 디렉토리 구조와 C++ 프로젝트를 가지고
내 Makefile은 지금까지입니다. $ LEVELDB는 Google의 leveldb 라이브러리에 대한 경로이며, 내 leveldb.hpp 및 cpp 파일과 다릅니다. 사용자 정의 클래스) :
CC=g++
LEVELDB=/route/to/Googles/library/leveldb
BOOST=/route/to/boost/cpp-netlib-0.9.2
DATABASE=/route/to/my/project/src/database
CFLAGS=-I$(LEVELDB)/include -I$(BOOST) -Wall -O2
LDFLAGS=-L$(LEVELDB) -lleveldb -lpthread -lboost_system -lboost_thread -pthread
all:server
server: server.cpp database/leveldb.cpp
$(CC) -o [email protected] $(CFLAGS) -I$(DATABASE) $< $(LDFLAGS) -L$(DATABASE)
컴파일 할 수 없습니다. 그것은 나에게 "LevelDB :: LevelDB (std :: basic_string, std :: allocator>) '에 대한 정의되지 않은 참조를 제공합니다. Makefile 때문에 컴파일 오류입니다. 왜냐하면 모든 것을 가지고 다 잘 작동했기 때문입니다. 하나의 단일 소스 파일.
많은 도움을 주시면 감사하겠습니다. 당신이 make
(또는 make all
또는 make server
) 또는 make servidor
하려고하는 여부를
감사합니다 :)
'servidor'는 cpp 파일 대신'server.o'와 같은 객체 파일에 의존해서는 안됩니까? .cpp를 .o로 바꾸고 make가 개체 파일을 생성합니다. –
데이터베이스 디렉토리에 무언가를 만들고 있습니까? '-L $ (DATABASE)' – juanchopanza
Make는 실행되는 모든 것에 대한 정확한 명령 행 호출을 출력하므로 GCC 호출 방법을 볼 수 있어야한다. 그것이 GCC가 호출 될 것을 기대하는 것과 일치하지 않으면, 그 때까지 Makefile을 수정하십시오. –