2017-02-17 3 views
2

Если у меня есть код, который будет работать, вызовите его main.cpp и исполняемый r.exe, то я пишу Makefile со следующей целью:Makefile для запуска кода он компилирует

compile: 
    g++ -std=c++11 main.cpp -o r 

Исполняемыми, r.exe принимает в качестве двух аргументов i.txt, o.txt. Как добавить вторую цель в Makefile так, что я могу запустить следующую команду, чтобы увидеть программу выполнения:

make run i.txt o.txt 

Я попытался добавить вторую цель в Makefile:

run: 
    r.exe $1 $2 

например, но make заявляет: «'r' обновлен» и «ничего не сделать для« i.txt », ... и т. Д.».

Я также попытался найти какое-то время, но «make», «run» и «variables» или «arguments» имеют, по сути, брандмауэр поиска несвязанного контента.

+0

Я заинтересован в том, есть ли способ сделать это с делать в одиночку, но для меня это имеет смысл использовать Баш скрипт. – synchronizer

+0

Я предлагаю вам также попробовать что-то кросс-платформенное и более мощное, как CMake. Что касается этой проблемы, просто попросите IDE выполнить ее после компиляции (у Visual Studio есть такая опция). – tambre

+0

@synchronizer да, я все еще новичок в C++. Для этой ситуации требуются следующие команды: verbatim: 'make compile', а затем' make run i.txt o.txt' (могу ли я разместить там файл bash?) – bordeo

ответ

5

Вы не можете передавать аргументы make. Команда make run i.txt o.txt попытается построить правила run, i.txt и o.txt.

Что вы могли бы вместо того, чтобы это использовать переменную:

run: 
    r.exe ${ARGS} 

make run ARGS="i.txt o.txt" 

Side-нота, правила должны сделать те файлы, которые они говорят, что они делают. Таким образом, вы действительно хотите, чтобы ваши правила компиляции выглядеть следующим образом:

r.exe : main.cpp 
    g++ -std=c++11 $^ -o [email protected] 

compile : r.exe 
.PHONY : compile 
Смежные вопросы