У меня очень мало опыта работы с 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
)?
'system' не будет знать о вашем' bash_profile', поэтому, возможно, 'testbrew' не получает добавляется к' PATH', как это делает регулярно. Может быть, попытка пройти абсолютный путь. См. Http://stackoverflow.com/questions/28555822/how-do-i-make-rubys-system-call-aware-of-my-bash-profile-aliases –
@maxple, но тогда как вторая 'система () 'вызов работать в той же ситуации? Второй работает отлично, и 'bin.install' может скопировать его в нужный каталог – Curious
dunno. удачи –