2017-12-05 5 views
0

저는 Yocto 빌드 환경을 처음 사용합니다.Yocto 프로젝트의 컴파일 시간 매개 변수를 전달하는 방법은 무엇입니까?

#include <stdio.h> 
int main() 
{ 
    printf("HELLO WORLD\n"); 

#ifdef MYDEF 
    printf("MYDEF is defined\n"); 
#endif 

    return 0; 
} 

내가 local.conf 파일에 플래그/매개 변수 MYDEF를 전달하려는 : 나는 다음과 같이 몇 가지 코드를 가진 C 코드를 가지고있다. 나는 다음 정의를 시도했지만 작동하지 않았다. 내가 뭘 잘못하고 어떤 문제를 해결할 수 있을지에 대한 생각?

MYDEF = 'y' 
MYDEF ?= 'y' 
MYDEF ??= 'y' 
CFLAGS = "-DMYDEF" 
TARGET_CFLAGS = "-DMYDEF" 
BUILD_CFLAGS = "-DMYDEF" 

감사합니다.

LICENSE = "CLOSED" 

SRC_URI = "file://hello_test.cpp" 
S = "${WORKDIR}" 

inherit native 

MYDEF = "y" 

do_compile(){ 
    ${CC} -DMYDEF -o hello_test ${S}/hello_test.cpp 
} 

do_install() { 
    install -d ${D}${bindir} 
    install ${B}/hello_test ${D}/${bindir} 
} 

그리고 바이너리 실행 hello_test 의 증거 :

+0

메이크 파일이나 일반 C 코드를 사용합니까? –

+0

이 설정에서는 Makefile을 사용하지 않습니다. -DMYDEF를 사용하여 무언가를 전달함으로써 Makefile을 사용하는 방법을 알고 있습니다.하지만 이것은 yocto 기반의 빌드 시스템이며 커튼 뒤에 무엇이 생성되는지 전혀 알지 못합니다. 난 단지 Yocto의 bitbake 명령에 MYDEF를 정의 된 매개 변수로 전달하도록 명령하는 방법이 필요합니다. 이견있는 사람?? – learner

+0

그러면 @ astor555 대답은 잘 될 것입니다. Yocto는 특별한 일을하지 않습니다. 그가했던 것처럼 $ {CC}를 사용해야합니다. 다른 모든 것은 관리됩니다. –

답변

1

내가 당신의 예제 코드를 컴파일와 예 레시피를 만들 수 있었다

$ ./hello_test 
HELLO WORLD 
MYDEF is defined 
+0

안녕 astro555, 답변 해 주셔서 감사합니다. 정말 도움이됩니다. 그러나 나에 대한 요구 사항은 .bb 또는 .bbappend 파일을 수정하지 않기 때문에 local.conf 파일에이 MYDEF = "y"를 넣는 것입니다. 이 답변을 알고 있다면 알려주십시오. – learner

+0

이 라인을 _MYDEF = "y"_로 옮겨 보았습니까? 어떤 변수와 변수가 생성되었는지 확인하기 위해 _-e_ 옵션을 사용할 수 있습니다 (예 : _bitbake -e hello-test | grep MYDEF_). 만약 당신이 그 레이어를 수정할 수 없다면, 또 다른 해결책은 당신이 추가 할 새로운 레이어를 만드는 것입니다. (저는 bblayers.conf를 수정할 수 있다고 가정합니다). – astor555

+0

나는 그 줄을 local.conf에 추가하여 시작하려고 시도했다. 작동하지 않을 때 여기에 질문을 게시했습니다. local.conf 파일 외에 다른 변경 사항을 수행 했습니까 ?? – learner

0

동일한 코드를 촬영 등을 @ astor555, 플래그가 처리되는 방식에 몇 가지 문제가 있습니다.

LICENSE = "CLOSED" 

SRC_URI = "file://hello_test.cpp" 
S = "${WORKDIR}" 

inherit native 

MYDEF ?= "-DMYDEF" 

do_compile(){ 
    ${CC} ${MYDEF} -o hello_test ${S}/hello_test.cpp 
} 

do_install() { 
    install -d ${D}${bindir} 
    install ${B}/hello_test ${D}/${bindir} 
} 

참고 MYDEF 변수의 정의, 어떻게이 do_compile의 funciton 내에서 참조됩니다. ,

MYDEF = "-DMYDEF" 

그러나 제조법으로 약한 할당 = 사용 : 그것은 좋아

MYDEF = "" 

또는 강제 : 는 그런 다음 local.conf에 당신은 그 값을 재정 의하여이 기능을 사용 중지 할 수 있습니다 중 그것은 기본적으로 값이 될 것이므로 local.conf에 아무 것도 추가하지 않아도된다.

관련 문제