ndk-build
스크립트는 NDK의 Make 기반 빌드 시스템을 사용하는 프로젝트를 빌드합니다. ndk-build
에서 사용하는 Android.mk 및 Application.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은 가능한 각 설정 조합의 결과를 나타낸 것입니다.
매니페스트 설정 | NDK_DEBUG=0 | NDK_DEBUG=1 | NDK_DEBUG가 지정 안 됨 |
---|---|---|---|
android:debuggable="true" | 디버그, 기호, 최적화됨*1 | 디버그, 기호, 최적화 안 됨*2 | (NDK_DEBUG=1과 동일) |
android:debuggable="false" | 릴리스, 기호, 최적화됨 | 출시, 기호, 최적화 안 됨 | 출시, 기호 없음, 최적화됨*3 |
*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
를 사용할 수 있습니다.