为自制软件构建 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"
我对 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"