2017-10-23 19 views
0

cmake에서 조건부 전처리 기는 어떻게합니까 #ifdef #endif.CMakeLists.txt 조건부 전 처리기를 포함하는 방법

예를 들어, 소스 파일에 #ifdef #endif이 있으며이 파일을 합병 중에 포함시키고 싶습니다.

어떻게 하시겠습니까? Source file on github

그리고 CMakeLists.txt 파일 위치는 다음과 같습니다 :

#ifdef LWM2M_WITH_LOGS 
#include <inttypes.h> 
#define LOG(STR) lwm2m_printf("[%s:%d] " STR "\r\n", __func__ , __LINE__) 
#endif 

전체 소스 파일 위치는 다음과 이 CMakeLists.txt

+0

무엇이 필요합니까? 'CMakeLists.txt'의 조건부 정의 또는 소스 파일의 조건부 정의? – Gluttton

+0

링크 된 소스 파일은 포함 파일입니다. 소스 코드에'#include "internals.h"와 같은 라인을 포함 시키십시오. –

+0

@Gluttton 감사합니다. 조건부 정의가 이미 소스 파일에 있습니다. 미안하지만 내가 명확하지 않은 경우이 질문을 포함 할 때 컴파일 할 때 포함 시켜서 CMakeLists 파일에 무엇을 넣어야합니까? –

답변

1

당신은 CMakeLists.txt에 옵션을 추가 할 수 있습니다

option (WITH_LOGS "Use reach logging." OFF) 
if (WITH_LOGS) 
    # Do some related work (if you need), 
    # ... 
    # and add definition for compiler 
    target_compile_definitions (lwm2mclient PRIVATE -DLWM2M_WITH_LOGS) 
endif() 

프로젝트를 구성하십시오 :

cmake -DWITH_LOGS=ON {path-to-CMakeLists.txt}