Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mike_device
3 / 3 / 3
Регистрация: 11.05.2013
Сообщений: 139
#1

Компиляция через Makefile - C++

11.05.2013, 19:04. Просмотров 875. Ответов 7
Метки нет (Все метки)

Есть такой Makefile. Все работает хорошо, только есть проблема. Он все время вызывает main.exe (ну или то, что пропишу). Можно как-нибудь здесь прописать, чтобы я в консоли командой "make <имя файла>" вызвал этот Makefile и
<имя файла> было подставлено везде, то есть, чтобы запускался не main а <имя файла> ??

Код
run: main
	main

main: main.o
	cc main.o -o main

main.o: main.c
	cc -c main.c -std=c99
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2013, 19:04     Компиляция через Makefile
Посмотрите здесь:

Make, makefile, simple makefile, hello_world - C++
Всем привет! Разбираюсь с мэйк-файлами. Проблема следующая: не понятен сам принцип обработки целей. Сейчас я понимаю это...

Компиляция через cmd - C++
Чем вызвана ошибка при компиляции (встроенный компилятор visual studio) через командную строку: cl.exe main.cpp Запуск программы...

Компиляция проекта через .bat - C++
В интернете ничего не нашёл толкового... как скомпилировать проект через .bat со всеми подключаемыми библиотеками. Нужно с помощью...

Компиляция C++ кода через консоль - C++
Есть простенький код: #include &lt;iostream&gt; #include &lt;vector&gt; int main(int argc, char *argv){ std::vector&lt;int&gt; vec; int num=1;...

Компиляция через консоль. VS 2012 - C++
Запускаю vcvars32.bat в папке C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin Пишу: cl -GX C:\Downloads\Sample.cpp Ответ: ...

Компиляция библиотеки через make.exe - C++
Скачал исходный код библиотеки oglft-0.9, скачал make-3.81.exe, не могу понять как скомпилировать, подскажите. В папке есть файлы ...

Компиляция заданного кода в exe через программу - C++
Хочу узнать поподробнее, как реализовать компиляцию некого заданного кода в exe для windows через самописную программу. Ведь как-то писали...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
1701 / 1194 / 495
Регистрация: 12.02.2013
Сообщений: 1,978
11.05.2013, 20:21     Компиляция через Makefile #2
Mike_device, т.е. чтобы имя конечного бинарного файла передавалось при вызове make?
Код
$ make test
в результате получаем test.exe который запускается сразу после сборки? Я правильно понял?
Mike_device
3 / 3 / 3
Регистрация: 11.05.2013
Сообщений: 139
11.05.2013, 20:27  [ТС]     Компиляция через Makefile #3
Да, все так, я это и хочу
anmartex
...
1701 / 1194 / 495
Регистрация: 12.02.2013
Сообщений: 1,978
11.05.2013, 20:30     Компиляция через Makefile #4
Mike_device, ну самое простое, что в голову взбрело:
Код
OUTNAME=main

run: main
		./${OUTNAME}

main: main.o
		cc main.o -o ${OUTNAME}

main.o: main.c
		cc -c main.c -std=c99
Вызов:
Код
$make OUTNAME=test
Mike_device
3 / 3 / 3
Регистрация: 11.05.2013
Сообщений: 139
11.05.2013, 20:53  [ТС]     Компиляция через Makefile #5
anmartex, )) работает) спасибо)

Добавлено через 15 минут
anmartex, Кстати, а вот можно как-нибудь неявно присвоить значение переменной, то есть не писать OUTNAME=test, а просто test и этой переменной присвоится это имя?
anmartex
...
1701 / 1194 / 495
Регистрация: 12.02.2013
Сообщений: 1,978
12.05.2013, 10:52     Компиляция через Makefile #6
Цитата Сообщение от Mike_device Посмотреть сообщение
Кстати, а вот можно как-нибудь неявно присвоить значение переменной, то есть не писать OUTNAME=test, а просто test и этой переменной присвоится это имя?
Дело в том, что если вы просто будите передавать имя, make его будет расценивать как правило, и будет его искать в Makefile-е. Но этим можно воспользоваться, правда вам нужно будет описать в Makefile-е все варианты:
Код
OUTNAME=main

test1:
		$(MAKE) run OUTNAME="test1"

test2:
		$(MAKE) run OUTNAME="test2"

run: main
		./${OUTNAME}

main: main.o
		cc main.o -o ${OUTNAME}

main.o: main.c
		cc -c main.c -std=c99
Теперь вы сможете вызывать:
Код
$ make test1
и
Код
$ make test2
Kastaneda
Форумчанин
Эксперт С++
4511 / 2853 / 227
Регистрация: 12.12.2009
Сообщений: 7,248
Записей в блоге: 1
Завершенные тесты: 1
12.05.2013, 11:15     Компиляция через Makefile #7
Часто делают обертку над мэйком в виде скрипта, в данном случае можно сделать так
Bash
1
make OUTNAME=$1
назвать этот скрипт compile и вызывать так
Bash
1
compile progname
P.S. в винде вроде надо так
Bash
1
make OUTNAME=%1
и там еще вывод в батнике надо подавить, непомню как это делается.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2013, 12:36     Компиляция через Makefile
Еще ссылки по теме:

Компиляция программы из файла cpp через командную строку - C++
Допустим я написал этот код в стандартном виндовском блокноте #include &lt;iostream&gt; int main(){ std::cout &lt;&lt; &quot;Hello,...

Makefile - C++
У меня есть мальенкий проэк, пока что компилирую его с помощю IDE (не хочется писать руками длинный мейкфайл). И у меня вопрос, как...

makefile - C++
Здравствуйте. Скачал библиотеку, там исходники и makefile. Как ее подключить? Заранее спасибо. Добавлено через 2 часа 4 минуты ап....

составить makefile - C++
Привет. В общем, у меня такая ситуация. На серваке стоит CentOS, пишу я на g++. Прога использует несколько библиотек, которые еще и...

DLL+Makefile - C++
Как cкомпилировать в студии библиотеку с помощью мейка? VS 2012


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Mike_device
3 / 3 / 3
Регистрация: 11.05.2013
Сообщений: 139
12.05.2013, 12:36  [ТС]     Компиляция через Makefile #8
угу, хорошо, вроде понятно, спасибо всем) буду пробовать)
Yandex
Объявления
12.05.2013, 12:36     Компиляция через Makefile
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru