2014-11-20 5 views
1

Android NDK를 사용하면 C++ 소스 코드에서 git 버전을 얻고 싶습니다. 그래서 나는이처럼 내 함수를 구현 : Android.mk에서Android.mk의 ShellScripts에서 소스 코드로 생성하는 매크로 정의를 전달하는 방법

const char *GetGitVersion() 
{ 
#ifdef GIT_VERSION 
    return GIT_VERSION; 
#else 
    return NULL; 
#endif 
} 

: get_version.sh에서

LOCAL_CPPFLAGS += -D'GIT_VERSION="$(shell $(LOCAL_PATH)/get_version.sh)"' 

:

GIT_VERSION=`git --no-pager log --abbrev=7 -n 1 --pretty=format:"%h %ci" HEAD | \ 
        awk '{gsub("-", "");print $2"-"$1}'` 
echo Git-$GIT_VERSION 

내 문제는 다음과 같습니다

전 먼저 내 프로그램을 빌드하면 작동한다.하지만 내 변경 사항을 제출하고 자식 버전이 변경되면 컴파일러 내 소스 코드를 작성하지 않았습니다. 함수 GetGitVersion 이전 버전을 반환합니다. 왜? 내 요구 사항을 구현하는 다른 방법이 있습니까?

죄송합니다, 제 영어는 가난합니다!

답변

0

함수 구현을 업데이트 할 수 있도록 lib를 다시 컴파일해야합니다.

그러나 GetGitVersion()이 정의 된 소스 파일에 변경 사항이 없으면 다시 컴파일 할 수 없습니다.

원본 파일을 강제로 다시 컴파일하려면 파일을 마지막으로 수정 한 시간을 업데이트하려면 touch source.c (linux/unix) 또는 copy /b source.c +,, (windows)을 사용하면됩니다.

+0

예, 맞습니다.하지만이 문제를 해결할 수있는 다른 스마트 방법이 있습니까? – CodingPanda