2017-03-01 15 views
0

CMake를 사용하여 구성하고 생성하는 기존 프로젝트에서 작업하고 있습니다. 대상이 ARM 장치이므로 Yocto/OpenEmbedded을 사용하여 모든 시스템을 빌드합니다.Yocto에 의해 CMAKE projet 빌드에서 전 처리기 정의를 추가하는 방법

나는 cmake 프로젝트를 만들기위한 레시피를 만들 수 있습니다. 그것은 그 다음과 같습니다 코드에서

DESCRIPTION = "FANN LIB" 

LICENSE = "CLOSED" 

inherit cmake 

SRCREV = "${AUTOREV}" 

PV = "1.0" 

SRC_URI = "git://github.com/libfann/fann.git;branch=master;protocol=git" 

S = "${WORKDIR}/git" 
BBCLASSEXTEND = "native" 

FILES_${PN} += "/usr/lib/cmake/" 

내가 활성화 싶다 "#ifdef와 DEBUG"이 있습니다. 그래서 C/C++ Flags에 DEBUG를 추가하고 싶습니다.

은 내가

EXTRA_OECMAKE += "CXXFLAGS='-DDEBUG'" 
EXTRA_OECMAKE = "set(CMAKE_CXX_FLAGS "-DDEBUG")" 

를 사용할 수 그러나 부스는 모든 CFLAGS를 교체하고 내가 원하는 것이 아니다 발견 (플러스 컴파일 부러!)

난 그냥 taht를의 -DDEBUG 싶습니다이 추가 될 때 컴파일러 호출! :-)

Yocto 제조법의 CMake 기반 프로젝트에 전 처리기 정의를 어떻게 추가 할 수 있습니까?

답변

2

나는 (또한 cmake 기준) 내 레시피 파일에 대상 빌드이 할당을 사용하고 있습니다 :

# This flag is also propagated to CXXFLAGS 
TARGET_CFLAGS += "-DSOME_FLAG" 

잘 모르겠어요 CFLAGS가 CXXFLAGS에 전파하는 이유, 당신은 또한 TARGET_CXXFLAGS을 시도 할 수 있도록 OpenEmbeedded의 변수. Yocto mega manual을 참조하십시오.

대상 빌드에만 플래그가 추가됩니다 (즉, 결과는 대상에서만 사용됨). 당신도 네이티브 변형을 만들고 있기 때문에 BUILD_CXXFLAGS이 도움이 될 것입니다. nativesdk 변형에 대해서도 BUILDSDK_CXXFLAGS이 있습니다 (귀하의 경우는 아닙니다). 이러한 변수는 the manual in the CXXFLAGS variable description에 명확하게 설명되어 있습니다. CMake와 관련된 그런데

, 한 가지 : 즉 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG") 당신이 당신의 CMakeLists.txt에 set(CMAKE_CXX_FLAGS "-DDEBUG")를 사용하는 경우, 당신은 오른쪽에 CMAKE_CXX_FLAGS을 반복 할 필요는, 그렇지 않으면 당신의 깃발을 덮어 쓸 수있다. 자세한 내용은 this blog을 참조하십시오.

+0

감사! 그것은 작동합니다! – AntoineC

+0

@AntoineC 정보를 제공해 주셔서 감사합니다. 그러니 답을 받아주십시오. 호기심에서 벗어나서, 어떤 변수를 설정 했습니까? –

+0

TARGET_CFLAGS을 (를) 설정했습니다. TARGET_CXXFLAGS를 설정해도 아무 것도 변경하지 마십시오 (적어도 FANN 프로젝트의 경우) – AntoineC