У меня есть такая структура для моего проекта:
root
|____Makefile
|
|___src
| |____*.cpp
|
|___includes
| |___*.h
|
|___obj
|___tmp
|___bin
Проблема в том, что когда я пытаюсь сделать, я получаю эту ошибку:
g++ -std=c++11 obj/book.o -o bin/main
Undefined symbols for architecture x86_64:
"_main", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Мой main.cpp находится внутри srcчем у меня есть файл .h, где я объявляю структуру и некоторые функции и .cpp, где я определяю все.В основном и в cpp я делаю
#include "../includes/myfile.h"
Как мне скомпилировать и исправить эту проблему?Вот мой make-файл:
CXX = g++
CXXFLAGS = -std=c++11 -I..
LDFLAGS = -std=c++11
EXECUTABLE= bin/main
SOURCES = $(wildcard src/*.cpp)
HEADERS = $(wildcard includes/*.h)
OBJECTS = $(patsubst src/%.cpp, obj/%.o, $(SOURCES))
BASE = $(USER)
all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CXX) $(LDFLAGS) $< -o $@
obj/%.o: src/%.cpp
$(CXX) -c $(CXXFLAGS) $< -o $@
clean:
rm $(OBJECTS)
rmproper:
rm $(OBJECTS) $(EXECUTABLE)
pdf:
a2ps Readme.txt makefile $(HEADERS) $(SOURCES) -o /tmp/out.ps
ps2pdf /tmp/out.ps $(BASE).pdf
zip:
zip $(BASE).zip Readme.txt makefile $(HEADERS) $(SOURCES)