GNU Automake를 사용하는 소스 패키지가 주어지면 일반적인 빌드는 다음과 같습니다.
cd ${srcdir}
./congigure
./make
모든 것이 아닌 단일 파일을 빌드하려면 make
일반적으로 다음을 허용합니다.
$ make path/to/file
그러나 오류가 반환됩니다.
make: *** No rule to make target 'path/to/file'. Stop.
필요한 파일은 자체 makefile이 포함된 하위 디렉터리에 있습니다. 해당 하위 디렉터리로 가서 실패 ./configure && make file
할 때마다 누락된 종속성을 해결하고 make
유사한 작업을 수행하여 해당 종속성을 제공하고 make
필요한 파일을 성공적으로 생성할 때까지 프로세스를 반복하는 것이 가능합니다.
하지만 분명 더 쉬운 방법이 있을 텐데요...?
그렇다면 GNU Automake에 의해 깔끔하게 빌드되는 일반적인 Linux 패키지를 가정하면 단일 파일(특히 바이너리 실행 파일)을 빌드하도록 지시하는 것이 가능합니까?
답변1
하위 디렉터리에 makefile이 있으면 대신 해당 makefile을 호출해야 할 수도 있습니다.
make -C path/to file
답변2
내가 생각해 낼 수 있었던 최선의 방법은 루프를 사용하여 for
종속 하위 디렉터리를 구축한 다음 해당 디렉터리 내에서 파일을 구축하는 것입니다.
for lib in dependency1 dependency2 dependency3
do
cd ${srcdir}/libs/${lib}
./configure --prefix=/usr
make LDFLAGS+=-lstdc++
done
cd ${srcdir}/libs/directory
./configure --prefix=/usr
--localstatedir=/var \
--mandir=/usr/share/man
make LDFLAGS+=-lstdc++ file
이것은 질문에 대한 대답은 아니지만, 가능한 한 좋을까 두렵습니다 ...