2016-12-28 5 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 

ここで紛らわしい部分は、最初の2をインストールするsystem仕事の行をコメントしていることですパッケージだが、3番目の理由はありませんか?私は三行目をしようとすると、私はエラーフォローなども

==> 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'に追加取得されていない、それが定期的にありませんように。たぶん絶対パスを渡してみてください。 @stackoverflow.com/questions/28555822/how-do-i-make-rubys-system-call-aware-of-my-bash-profile-aliases –

+0

@maxpleを参照してください.2番目の 'システム) 'コールは同じ状況で働く? 2番目のファイルは正常に動作し、 'bin.install'は必要なディレクトリにコピーすることができます – Curious

+0

dunno。がんばろう –

答えて

1

あなたの引数"-o testbrew"は間違っています。それは-oと解釈され、オプションの" testbrew"が含まれ、のスペースが含まれます。これは、複数の引数を持つsystemが通常のシェル解析をバイパスするためにのみ可能です。引数を正しく分割することは、直接責任があります。

他の引数を正しく外しました。私はそのようにやってお勧めします:

"-o", "testbrew" 
関連する問題