Grump - eso no está en la marca estándar; Debe ser una extensión GNU. Como dice Linux y Unix, no está claro qué desea, pero la opción -C no funcionará en Solaris 10 (/ usr / ccs / bin / make), AIX (/ usr / bin / make) o HP-UX 11.23 (/ usr / bin / make). Aún así, 1 de cada 4 no es tan malo.
Jonathan Leffler el
66
Funciona también en BSD make, así que no es solo una extensión de GNU.
Chris Dodd
44
asegúrese de que 'C' esté en mayúscula.
m.r226
101
Como se señaló en otras respuestas, make (1) tiene una -C opción para esto; varios comandos tienen opciones similares (por ejemplo, tar). Es útil tener en cuenta que para otros comandos que carecen de tales opciones se puede usar lo siguiente:
(cd /dir/path && command-to-run)
Esto ejecuta el comando en un sub-shell que primero ha cambiado su directorio de trabajo (mientras deja solo el directorio de trabajo del shell principal). Aquí && se utiliza en lugar de ; detectar casos de error en los que el directorio no se puede cambiar.
Si la razón por la que no desea cd a un directorio es porque necesita permanecer en el directorio actual para una tarea posterior, puede usar pushd y popd:
pushd ProjectDir ; make ; popd
Eso va al ProjectDir, ejecuta make y vuelve a donde estabas.
Como se señaló en otras respuestas, make (1) tiene una
-C
opción para esto; varios comandos tienen opciones similares (por ejemplo, tar). Es útil tener en cuenta que para otros comandos que carecen de tales opciones se puede usar lo siguiente:Esto ejecuta el comando en un sub-shell que primero ha cambiado su directorio de trabajo (mientras deja solo el directorio de trabajo del shell principal). Aquí
&&
se utiliza en lugar de;
detectar casos de error en los que el directorio no se puede cambiar.fuente
Si la razón por la que no desea cd a un directorio es porque necesita permanecer en el directorio actual para una tarea posterior, puede usar pushd y popd:
Eso va al ProjectDir, ejecuta make y vuelve a donde estabas.
fuente
También puedes usar:
fuente
makefile:
o
etc.
fuente