Ale*_*lds 7 ruby macos homebrew
我正在调试由于构建变量被破坏而失败的Homebrew公式:
clang++ called with: -mmacosx-version-min=10.7 -arch i386 -Weverything -O3 -std=c++11 -stdlib=libc++ -lc++ objects/foo.o objects/bar.o -o ../bin/foo_i386
superenv removed: -arch i386 -Weverything -O3
superenv added: -pipe -w -Os -march=native -isystem/usr/local/include -isystem/usr/include/libxml2 -isystem/System/Library/Frameworks/OpenGL.framework/Versions/Current/Headers -L/usr/local/lib -L/System/Library/Frameworks/OpenGL.framework/Versions/Current/Libraries -Wl,-headerpad_max_install_names
superenv executed: clang++ -pipe -w -Os -march=native -mmacosx-version-min=10.7 -std=c++11 -stdlib=libc++ -lc++ objects/foo.o objects/bar.o -o ../bin/foo_i386 -isystem/usr/local/include -isystem/usr/include/libxml2 -isystem/System/Library/Frameworks/OpenGL.framework/Versions/Current/Headers -L/usr/local/lib -L/System/Library/Frameworks/OpenGL.framework/Versions/Current/Libraries -Wl,-headerpad_max_install_names
Run Code Online (Sandbox Code Playgroud)
我想保留superenv删除的标志,删除他们的替换(由superenv添加).
我确实想要指定体系结构和优化级别,而且我不需要编译链接到XML或OpenGL库到命令行应用程序,该应用程序不处理XML并且没有图形界面或呈现三维布局.
这是我的公式install块:
def install
ENV.deparallelize
system 'make all'
system 'make install'
end
Run Code Online (Sandbox Code Playgroud)
我可以在installHomebrew公式的块中对Ruby环境变量进行任何更改,以防止原始标记被破坏(以及防止不必要的修改)?
什么是行不通的
该公式将与其他人共享.该公式需要是自包含的,就其所启用的设置而言.我不想重新配置和重新编译主Homebrew包管理器以保留标志,因为这将要求最终用户必须对其Homebrew安装进行相同的自定义.
我发现以下修改有助于创建一个工作公式,以解决我的问题中概述的具体问题:
\n\nclass Foo < Formula\n env :std\n ...\n\n def install\n ENV.O3\n ENV.deparallelize\n ENV.delete('CFLAGS')\n ENV.delete('CXXFLAGS')\n system 'make', 'all'\n system 'make', 'install'\n end\nend\nRun Code Online (Sandbox Code Playgroud)\n\n添加env :std还不够 \xe2\x80\x94 Homebrew 不断添加架构和其他标志以及破坏构建过程的链接选项。删除CFLAGS和CXXFLAGS更改有所帮助。
| 归档时间: |
|
| 查看次数: |
1770 次 |
| 最近记录: |