autotools - traductor - decimales en binario
Automake generando binarios a bin/en lugar de en src/ (3)
Busqué la respuesta a esta pregunta pero no encontré nada bueno. Tal vez son viejos y algo ha cambiado, así que vuelvo a preguntar.
Tengo una estructura de directorio como:
mi proyecto
src
compartimiento
Quiero eso, cuando hago en el directorio raíz, los binarios se ponen en ./bin, en lugar de saturar ./src. ¿Pero cómo?
EDIT: estoy utilizando C ++. Mi Makefile.am no tiene nada de especial. Solo las variables bin_PROGRAM y _SOURCES.
Cuando ejecuto make, los binarios generados se ponen en ./src. Simplemente los quiero en ./bin.
Automake no funciona bien si intenta configurar sus directorios de una forma diferente a la que espera. Lo que quieras implica escribir reglas adicionales para mover los binarios a ../bin
después de compilarlos, lo que es innecesariamente complicado.
Si no desea saturar su directorio de origen, intente esto:
cd my_project
mkdir build
cd build
../configure
make
Eso colocará todos los archivos generados (como makefiles, binarios, archivos de objetos) en los subdirectorios de my_project/build
.
Tienes una idea equivocada aquí.
Tu árbol de compilación está dondequiera que ejecutes configure
. Así es como está diseñado para que funcione autoconf. Los usuarios de su paquete (que no quieren saturar su árbol de fuentes) esperarán que funcione de esta manera.
Este enfoque es una solución más general con mucha más flexibilidad que la organización que está imaginando. Por ejemplo, no es terriblemente inusual querer mantener las fuentes y crear archivos en sistemas de archivos separados.
Una forma de decirle a Automake que cree binarios en un directorio determinado es agregar este directorio directamente al nombre en la variable "bin_PROGRAMS".
Considere el siguiente src / Makefile.am:
bin_PROGRAMS = foo
foo_SOURCES = ...
foo_CPPFLAGS = ...
foo_LDFLAGS = ...
Crea un "src / foo" binario, pero puede decirle a Automake que use las fuentes en src para crear un "bin / foo" binario:
bin_PROGRAMS = $(top_builddir)/bin/foo
__top_builddir__bin_foo_SOURCES = ...
__top_builddir__bin_foo_CPPFLAGS = ...
__top_builddir__bin_foo_LDFLAGS = ...
Lo probé con algunos paquetes e incluso "make distcheck" se lo traga. Aunque no puedo ser tan hacker ...