2016-02-02 9 views
1

Я не часто использую make-файлы, поэтому я только, как сделать базовые. Я пробовал читать о том, как решить мою проблему, но я потерян. Мне нужен файл makefile, в котором есть все две цели и тестирование. Обе эти цели должны скомпилировать программу с помощью g ++ -std = c + 11 -Wall -Werror -ansi -pedantic, и единственный файл, который нужно скомпилировать, - main.cpp, когда исполняемый файл создается компилятором, который ему нужно поставить исполняемый файл в новом каталоге с именем bin. И я предполагаю, что если я снова буду использовать make-файл, вам нужно будет проверить, был ли уже создан bin. Я знаю, как создать простой Makefile, такой как все: г ++ -std = C++ 11 -Wall -Werror -ansi -pedantic main.cppMakefile с несколькими целями и создает каталог с исполняемым файлом

Это создает исполняемый файл с именем a.out в текущей директории , но это касается того, насколько я знаю makefileS go

+0

Получение имени, отличного от «a.out», вам нужны параметры компилятора '' -o foo'', который не зависит от файлов make. Вы также можете написать '' -o./Bin/foo'', btw. – BitTickler

+0

Если вы чувствуете, что в будущем вы будете делать такие вещи, вы можете подумать о том, чтобы сделать стратегический выбор в системе сборки, которую вы хотите изучить (сначала). CMAKE - хороший кандидат. – BitTickler

+0

OK Я не уверен, насколько это правильно, но в основном я делал то, что хотел, поэтому создал –

ответ

0

Все, что делает Makefile, определяет зависимости сборки и команды для выполнения для создания этих зависимостей.

Такие вещи, как создание выходных каталогов, et. и др. это не make в работе как таковой, а скорее что-то, что выполняет команды, которые заставляют выполнять. Также нет Makefile, где указывается выход команд сборки. Это, конечно, определяется действительными командами, которые выполняются. Например, с gcc параметр -o указывает, куда идет выход компиляции. Итак:

all: bin/main 

test: bin/main 

bin/main: main.cpp 
    mkdir -p bin 
    g++ -std=c++11 -Wall -Werror -ansi -pedantic -o bin/main main.cpp 

Это очень удобно использовать mkdir -p в этих ситуациях. Если данный каталог не существует, он создается. Если он уже существует, mkdir просто спокойно завершает работу без ошибок.

+0

А я вижу. Спасибо вам, сэр, я попробовал ваш, и он отлично работал. –

Смежные вопросы