ndk-build 스크립트

ndk-build 스크립트는 NDK의 Make 기반 빌드 시스템을 사용하는 프로젝트를 빌드합니다. ndk-build에서 사용하는 Android.mkApplication.mk 구성에 관한 자세한 문서가 있습니다.

내부

ndk-build 스크립트를 실행하는 것은 다음 명령어를 실행하는 것과 같습니다.

$GNUMAKE -f <ndk>/build/core/build-local.mk
<parameters>

$GNUMAKE는 GNU Make 3.81 이상을 가리키고 <ndk>는 NDK 설치 디렉터리를 가리킵니다. 이 정보를 사용하여 다른 셸 스크립트에서 ndk-build를 호출하거나 자체 makefile을 호출할 수도 있습니다.

명령줄에서 호출하기

ndk-build 스크립트는 최상위 NDK 설치 디렉터리에 있습니다. 이 스크립트를 명령줄에서 실행하려면 애플리케이션 프로젝트 디렉터리 또는 그 아래 디렉터리에 있는 상태에서 호출하세요. 예:

$ cd <project>
$ <ndk>/ndk-build

이 예에서 <project>는 프로젝트의 루트 디렉터리를 가리키며 <ndk>는 NDK를 설치한 디렉터리입니다.

옵션

ndk-build에 관한 모든 매개변수는 NDK 빌드 스크립트를 실행하는 기본 GNU make 명령어로 직접 전달됩니다. ndk-build 및 옵션을 ndk-build <option> 형식으로 조합합니다. 예:

$ ndk-build clean

사용할 수 있는 옵션은 다음과 같습니다.

clean
이전에 생성된 바이너리를 모두 삭제합니다.

참고: Mac OS X에서 여러 병렬 실행으로 ndk-build clean를 실행하면 다음 메시지가 포함된 빌드 오류가 발생할 수 있습니다.

rm: fts_read: No such file or directory

이 문제를 방지하려면 -jN 수정자를 사용하지 않거나 N에 더 작은 값(예: 2)을 선택하는 것이 좋습니다.

V=1
빌드를 시작하고 빌드 명령어를 표시합니다.
-B
강제로 완전히 다시 빌드합니다.
-B V=1
강제로 완전히 다시 빌드하고 빌드 명령어를 표시합니다.
NDK_LOG=1
내부 NDK 로그 메시지를 표시합니다 (NDK 자체를 디버깅할 때 사용됨).
NDK_DEBUG=1
디버그 가능한 빌드를 강제 적용합니다 (표 1 참고).
NDK_DEBUG=0
출시 빌드를 강제 적용합니다 (표 1 참고).
NDK_HOST_32BIT=1
항상 도구 모음을 32비트 모드로 사용합니다.
NDK_APPLICATION_MK=<file>
NDK_APPLICATION_MK 변수가 가리키는 특정 Application.mk 파일을 사용하여 빌드합니다.
-C <project>
<project>에 있는 프로젝트 경로의 네이티브 코드를 빌드합니다. 터미널에서 이 경로로 cd하지 않으려는 때에 유용합니다.

디버그 가능한 빌드와 출시 빌드

NDK_DEBUG 옵션을 사용합니다. AndroidManifest.xml을 사용하여 디버그 빌드나 출시 빌드, 최적화 관련 동작, 기호 포함을 지정하는 경우도 있습니다. 표 1은 가능한 각 설정 조합의 결과를 나타낸 것입니다.

표 1. NDK_DEBUG(명령줄) 및 android:debuggable(매니페스트) 조합의 결과

매니페스트 설정NDK_DEBUG=0 NDK_DEBUG=1NDK_DEBUG가 지정 안 됨
android:debuggable="true" 디버그, 기호, 최적화됨*1 디버그, 기호, 최적화 안 됨*2 (NDK_DEBUG=1과 동일)
android:debuggable="false"릴리스, 기호, 최적화됨 출시, 기호, 최적화 안 됨출시, 기호 없음, 최적화됨*3
*1: 프로파일링에 유용함
*2: ndk-gdb 실행 시 기본값
*3: 기본 모드

참고: `NDK_DEBUG=0`은 `APP_OPTIM=release`와 같고 `-O2`로 컴파일됩니다. `NDK_DEBUG=1`은 `Application.mk`의 `APP_OPTIM=debug`와 같고 `-O0`으로 컴파일됩니다. `APP_OPTIM`에 관한 자세한 내용은 Application.mk를 참고하세요.

예를 들어, 명령줄의 구문은 다음과 같습니다.

$ ndk-build NDK_DEBUG=1

요구사항

일반적으로 ndk-build 또는 NDK를 사용하려면 GNU Make 4가 필요합니다. NDK는 자체 GNU Make 사본을 포함하고 있으며 $GNUMAKE 환경 변수가 부적합한 make를 가리키도록 설정하지 않는 한 이 사본을 사용합니다.

JSON 컴파일 데이터베이스

NDK r18 이상에서는 ndk-build가 JSON 컴파일 데이터베이스를 생성할 수 있습니다.

코드를 작성하지 않고 데이터베이스를 생성하려면 ndk-build compile_commands.json을 사용하고 부수적 효과로 데이터베이스를 빌드하고 생성하려면 ndk-build GEN_COMPILE_COMMANDS_DB=true를 사용할 수 있습니다.