2016-10-03 8 views
8

이 내 프로젝트 구조입니다. 예 :#DEFINE는 Jamfiles

#ifdef SOMEVALUE 
    Code 
#endif 

나는 Jamfile에 #DEFINE으로 CPP 파일을 컴파일 할 필요가있다. 이후, 나는 두 종류의 실행 파일을 가지고있다. (#define과 하나는 필요 없다.) 나는 Jamfile 자체에서 이것을해야하고 cpp 코드는 필요 없다.

나는 (#ifdef와 #endif 다음 블록 내부 정의를 찾을 수 없습니다) 작동하지 않는, 다음을 시도 :

내에서
lib libname : [ glob *.cpp ] : <link>static : <define>SOMEVALUE ; 

답변

5

와 GCC를 통해 컴파일은 "정의"기능을 사용하는 동안 당신은 당신의 예를 주어 본 적이있다. 그러나이 기능은 대상 정의의 requirement으로 지정해야합니다. requirements은 사용 예제와 같이 네 번째가 아닌 대상 정의의 세 번째 인수로 지정됩니다. 따라서 대신 :

lib 
    libname # main-target-name 
    : [ glob *.cpp ] # sources 
    : <link>statiC# requirements 
    : <define>SOMEVALUE # usage-requirements 
    ; 

당신은 대상 요건에 사용 요구 사항에서 "이 <가 > 정의"이동해야합니다 : 당신은 대상 정의에 대한 모든 인수가 here을 무엇인지 찾을 수

lib 
    libname # main-target-name 
    : [ glob *.cpp ] # sources 
    : <link>static <define>SOMEVALUE # requirements 
    : # usage-requirements 
    ; 

.

0

이전 프로젝트는 우리가 디버그 모드에 대해 서로 다른 컴파일을 할 때 사용 - 떨어져있는 디버그 기호를 추가하는 것은 런타임 중에 많은 유용한 값을 인쇄하는 데 사용됩니다. 방법은

#ifdef DEBUG 
/* Piece of code here*/ 
#endif 

을 수행하고 전 처리기 정의를 추가하기 -DDEBUG