ruby — Создание формулы C ++ для домашнего приготовления

У меня очень мало опыта работы с Ruby, и я пытался создать простую формулу доморощенного. У меня был простой тестовый проект со следующей структурой

.
├── Makefile
└── test.cpp

0 directories, 2 files

И тогда у меня есть следующее .rb файл формулы

class Testbrew < Formula
desc ""homepage ""url ""version ""head ""sha256 ""
def install
# system "make"# system("g++ -std=c++14 -O3 test.cpp -o testbrew")
system "g++", "-std=c++14",
"-O3",
"-Wall",
"-Werror",
"-Wextra",
"-pedantic",
"-Wvla",
"test.cpp",
"-o testbrew"bin.install "testbrew"ohai("Done!")
end
end

Запутанная часть здесь состоит в том, что первые две прокомментированные строки system работает, чтобы установить пакет, но третий не делает, есть идеи, почему? Если я попробую третью строку, я получу ошибку

==> g++ -std=c++14 -O3 -Wall -Werror -Wextra -pedantic -Wvla test.cpp -o testbrew
Error: No such file or directory - testbrew

Также в качестве продолжения, есть определенные вещи, которые вызывает функция system() не позволяет пользователю делать? есть ли какие-либо ограничения безопасности (например, с ptrace)?

0

Решение

Ваш аргумент "-o testbrew" неправильно. Это разбирает как -o с возможностью " testbrew" в том числе космос. Это возможно только потому, что system с множественными аргументами обходит обычный синтаксический анализ оболочки, вы несете прямую ответственность за правильное разбиение аргументов.

Вы неправильно изложили другие аргументы. Я бы порекомендовал сделать это так:

"-o", "testbrew"
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]