Написание Makefile для программы на C ++ - PullRequest
0 голосов
/ 07 декабря 2011

Я написал программу на С ++ для NetBeans, теперь я хочу запустить ее в Linux из командной строки. Как я могу написать Makefile, какова логика написания этого?

У меня 3 файла .cpp и 2 файла .hpp.

Вот что я пытался сделать:

# Makefile

# the C++ compiler
CXX     = g++
CC      = $(CXX)

# options to pass to the compiler
CXXFLAGS = -Wall -ansi -O2 -g
Run: Run.cpp Assessment3.o Student.o
$(CXX) $(CXXFLAGS) Run.cpp Assessment3.o Student.o -o Run

Run: Run.cpp Assessment3.hpp  Assessment3.o Student.o
 $(CXX) $(CXXFLAGS) Run.cpp Assessment3.o Student.o -o Run  

Assessment3.o: Assessment3.cpp Assessment3.hpp
$(CXX) $(CXXFLAGS)  -c Assessment3.cpp

Student.o: Student.cpp Assessment3.o
    $(CXX) $(CXXFLAGS) -c Student.cpp 

Это дает мне пропавший разделитель. Стоп.' ошибка в командной строке. Это не говорит, что это ошибка, хотя. Приветствия

Ответы [ 3 ]

3 голосов
/ 07 декабря 2011

Если вы хотите создать исполняемый файл с именем foo, вы можете просто использовать простой make-файл, который строит все за один раз с одной зависимостью:

# makefile 

SRCS = a.cpp b.cpp c.cpp

HDRS = a.h b.h

CXXFLAGS = -Wall

foo: $(SRCS) $(HDRS)
    g++ $(CXXFLAGS) $(SRCS) -o $@

EDIT

В качестве альтернативы, взяв исходный make-файл выше и исправив несколько незначительных проблем:

# Makefile

# the C++ compiler
CXX     = g++
CC      = $(CXX)

# options to pass to the compiler
CXXFLAGS = -Wall -ansi -O2 -g

Run: Run.o Assessment3.o Student.o
    $(CXX) $(CXXFLAGS) Run.o Assessment3.o Student.o -o $@

Run.o: Run.cpp
    $(CXX) $(CXXFLAGS) Run.cpp -o $@  

Assessment3.o: Assessment3.cpp Assessment3.hpp
    $(CXX) $(CXXFLAGS) -c Assessment3.cpp -o $@

Student.o: Student.cpp Student.hpp
    $(CXX) $(CXXFLAGS) -c Student.cpp -o $@
1 голос
/ 07 декабря 2011

Это может быть полезно http://mrbook.org/tutorials/make/ для меня я использую qMake, который доступен с QtCreator

0 голосов
/ 12 декабря 2011

Ошибка «отсутствует разделитель» обычно возникает из-за неиспользования символа табуляции перед командами для выполнения для определенной цели. Попробуйте следующее:

Run: Run.cpp Assessment3.o Student.o
[TAB] $(CXX) $(CXXFLAGS) Run.cpp Assessment3.o Student.o -o Run

Вместо [TAB] вам, конечно, нужно будет вставить символ табуляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...