2016-12-28 3 views
0

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

. 
├── 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

'system' не будет знать о вашем' bash_profile', поэтому, возможно, 'testbrew' не получает добавляется к' PATH', как это делает регулярно. Может быть, попытка пройти абсолютный путь. См. Http://stackoverflow.com/questions/28555822/how-do-i-make-rubys-system-call-aware-of-my-bash-profile-aliases –

+0

@maxple, но тогда как вторая 'система () 'вызов работать в той же ситуации? Второй работает отлично, и 'bin.install' может скопировать его в нужный каталог – Curious

+0

dunno. удачи –

ответ

1

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

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

"-o", "testbrew" 
Смежные вопросы