Open sergii-rybin-tfs opened 1 year ago
Зачем это нужно, если всё и так работает?
#!/bin/bash
msg_file=/dev/null
#msg_file=/dev/stdout
tmp_path=$HOME"/.cache/c++/"
mkdir -p $tmp_path
tmp_file=$1".c++"
exe_file=$1".bin"
if test $1 -nt $tmp_path$exe_file; then
echo "Need to recompile.." > $msg_file
tail -n +2 $1 > $tmp_path$tmp_file
eval "g++ -o $tmp_path$exe_file $tmp_path$tmp_file > /dev/null 2>&1"
if [ $? -eq 0 ]
then
echo "Compiled ok" > $msg_file
else
echo "Compile error" > $msg_file
exit 255
fi
fi
eval "$tmp_path$exe_file $@1"
#!/usr/bin/c++shell
#include <iostream>
int main() {
std::cout << "Hello, world!\n";
}
eoanermine@eoanermine: ~$ ./test.cpp
Hello, world!
Зачем это нужно, если всё и так работает?
Есть более красивое решение в 2 комментария в cpp файле. Без дополнительного скрипта.
Но сам файл от этого не станет валидным cpp файлом.
Лучше тогда уже делать еще один ISO стандарт на СMake.
Разрешить shebang в C++ препроцессоре
Пожалуй C++ один из немногих популярных языков программирования где компилятор всё ещё запрещает shebang.
В итоге на C++ проектах можно увидеть целый зоопарк разных скриптов написанных на bash/ch/perl/python/go для решения задач связанных со сборкой, тестированием или деплоем.
Эта фича вместе с #558 может открыть новую сферу для применения C++ которую до этого занимали скриптовые языки.
Полезные ссылки: