Недавно я начал изучать язык cpp на linux, и теперь я запускаю файл cpp, используя следующие команды.
g++ -o xxx xxx.cpp
./xxx
Есть ли способ сделать это однострочной командой, такой как compile-and-run xxx.cpp
?Благодарю.
Недавно я начал изучать язык cpp на linux, и теперь я запускаю файл cpp, используя следующие команды.
g++ -o xxx xxx.cpp
./xxx
Есть ли способ сделать это однострочной командой, такой как compile-and-run xxx.cpp
?Благодарю.
Как насчет этого?
g++ -o xxx xxx.cpp && ./xxx
?
( &&
означает, что он будет ждать, пока первая задача будет выполнена, &
означает, что он запустит ее сразу после того, как запустил первую, вы НЕ хотите эту задачу. )
Джереми Бэнкс опубликовал один из самых удивительных трюков, которые я когда-либо видел в SO. По сути, он добавляет одну строку Bash-Script вверху файла cpp, что позволяет ему напрямую компилировать и выполнять этот файл.
//&>/dev/null;x="${0%.*}";[ ! "$x" -ot "$0" ]||(rm -f "$x";cc -o "$x" "$0")&&exec "$x" "$@"
Это объяснение скопировано с сущности:
//
Поскольку мы не хотим, чтобы это было видно в C, мы помещаем это в комментарий.
&>/dev/null
К сожалению,
//
интерпретируется как недопустимая команда оболочки и выдает сообщение об ошибке, поэтому нам нужно перенаправить его в/dev/null
чтобы избавиться от него.;x="${0%.*}"
Это определяет, каким будет наше скомпилированное имя файла, с помощью замены строки, чтобы избавиться от любых расширений текущего имени файла.
;[ ! "$x" -ot "$0" ]||
Эта проверка, если уже существует скомпилированная версия, более новая, чем исходный файл. Если не...
(rm -f "$x";cc -o "$x" "$0")
... мы удаляем любую существующую версию и затем компилируем наш код, используя выбранное нами скомпилированное имя файла.
&&exec "$x" "$@"
Если компиляция прошла успешно или не нужна, передайте выполнение скомпилированному коду, передав аргументы, переданные этому сценарию.
Эта техника называется полиглотом, что означает, что она написана на нескольких языках и также может быть интерпретирована этими языковыми переводчиками без проблем.
Создайте Makefile следующим образом:
xxx: xxx.cpp
g++ -o xxx xxx.cpp
run: xxx
./xxx
Затем просто введите make run
. Конечно, ваш Makefile может быть гораздо более сложным, это простой пример. Важной вещью является предложение "запустить".
простой, общий make-файл может сделать это:
$ cat Makefile
.SUFFIXES: .o .c
.c:
cc -o $@ $<
./$@
$ make myprogram
скомпилирует myprogram.c и запустит myprogram. Как это определено с правилами по умолчанию, это работает для каждого файла .c в этом каталоге.
Естественно, вы должны заботиться о библиотеках, каталогах и других зависимостях ...
Я надеюсь, что это помогает, тем не менее
Вы можете написать сценарий. лайк:
#!/bin/bash
g++ -o $1 $1.cpp
./$1
затем сделайте его исполняемым chmod u+x script.sh
и назовите его как script.sh yourcode
(пропустите cpp или измените скрипт).