为自制软件构建 C++ 公式

Building a C++ formula for homebrew

我对 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)?

你的论点"-o testbrew"是错误的。解析为 -o,选项 " testbrew" 包括 space。这是唯一可能的,因为带有多个参数的 system 绕过了正常的 shell 解析,您直接负责正确拆分参数。

您正确地分解了其他参数。我建议这样做:

"-o", "testbrew"