Una fórmula de elaboración es un archivo Ruby ( .rb
) que contiene las opciones de compilación que contiene. Homebrew's brew install|reinstall
permite especificar una URL en lugar de un nombre de fórmula, por lo que se pueden agregar indicadores de compilación a una copia en línea de la fórmula y alojarlos en un servicio como gist.github.com .
Aquí hay un ejemplo de archivo ruby que tiene una opción de compilación anulada.
def install
args = std_cmake_args
# OVERRIDE: Force cmake to use debug flags
args << "-DCMAKE_BUILD_TYPE=Debug"
system "cmake", ".", *args
end
std_cmake_args
, definido en la parte interna de Homebrew formula.rb
es una variable interna de toda la fórmula de Homebrew cmake
y proporciona valores predeterminados sanos a cada cmake
de compilación antes de agregar argumentos adicionales.
Este ejemplo utiliza cmake
, cada proyecto tendrá sus propias herramientas de compilación y, por lo tanto, potencialmente diferentes técnicas para agregar indicadores de compilación. Por ejemplo, para indicar a cmake
que use marcas de depuración, es args << "-DCMAKE_BUILD_TYPE=Debug"
Una vez que se hayan realizado estos cambios en el archivo .rb
y alojados en línea, puede reinstalar el paquete con las nuevas opciones utilizando la opción de línea de comando --build-from-source
.
brew reinstall --build-from-source https://<path to formula>.rb
ADVERTENCIA : si usa gist.github.com
, tenga en cuenta que la versión "Raw" es la URL que desea. De lo contrario, intentará instalar el HTML (por ejemplo, la vista previa del código) de la página, que no funcionará. :)
ADVERTENCIA : recuerde que esto volverá a instalar el paquete especificado en el directorio de Homebrew con marcas de depuración, por lo que la versión antigua "lanzada" u "optimizada" ya no estará disponible. Así que recuerde volver a instalar la versión sin depuración utilizando la técnica estándar brew install
una vez que se haya completado la solución de problemas o de lo contrario tendrá una versión de depuración de una biblioteca en su computadora hasta que se actualice manualmente. :)