나는 당신이 원하는 것이 확실치 않지만, 많은 가능성이 있습니다.
A. 정의 된 SOMEMACRO 매크로를 사용하여 항상 컴파일하려고합니다. 이 경우에, Jamfile에서 프로젝트를 위해 당신이 SOMEMACRO 항상 정의해야하는 경우가 <variant>debug:
조건을 제거 할 수 있습니다
project
: requirements # These are requirements for this project
# If compiling debug, define SOMEMACRO
<variant>debug:<define>SOMEMACRO
: usage-requirements
# These are requirements projects using this project must have
<variant>debug:<define>SOMEMACRO
;
를 추가합니다. 다른 플래그를 설정해야하는 경우 <cflags>
, <cxxflags>
및 을 적절하게 사용할 수 있습니다.
B. 플래그를 켜기/끄기를 기본 설정으로 설정하고 싶으면 설정을 해제하고 그 설정은 해제 된 빌드와 호환되지 않습니다. 어떤 경우에는 기능을 원합니다.
import feature ;
feature.feature steves-feature : off on
: composite propagated link-incompatible ;
feature.compose <steves-feature>on : <define>SOMEMACRO ;
feature.feature
규칙은 두 가지 값과 세 속성 <steves-feature>
라는 기능을 정의합니다. composite
은 다른 기능 (이 경우 <define>SOMEMACRO
)으로 구성된 기능임을 의미합니다. propagated
은이 기능 세트가있는 대상을 포함하는 모든 대상에도이 기능이 설정됨을 의미합니다. link-incompatible
은 <steves-feature>on
인 대상을 <steves-feature>off
인 대상과 결합 할 수 없음을 의미합니다. (그 결과, bjam이 기능은 어떤 대상이 설정되어있는 경우 steves-feature-on
또는 steves-feature-off
라는 이름의 디렉토리에 생성 된 파일을 넣어 것입니다.)
이 기능은 바로 위의 프로젝트 규칙에 사용되는 <define>
기능처럼 사용할 수 있습니다 섹션. (프로젝트 규칙의 default-build
섹션에 추가 할 수도 있습니다.)
명령 줄에서 기능을 설정할 수도 있습니다 (bjam steves-feature=on
).
C. 완전한 변형이 필요합니다. 생각 해봐야 할 점은 함께 설정해야하는 다양한 기능을 가진 몇 가지 공통 빌드 구성이있는 경우라고 생각합니다. 이미 위와 같은 기능을 이미 만들었 으면 쉽습니다.
variant steves-debug : debug : <steves-feature>on ;
이 변종은 debug
변형 그러나 추가 기능 <steves-feature>on
와 동일합니다.
나는 variant
규칙을 사용한 적이 없기 때문에 어딘가에서 가져와야 할 수도 있습니다.또한 할 수있을 수도 있습니다
variant steves-debug : debug : <define>SOMEMACRO ;
그러나 bjam이 디렉토리 구조를 만들지는 모르겠습니다. (아마도 가능할 것입니다.)
감사합니다. 케이스 B 또는 아마도 C가 내가 찾고있는 것이고, 가장 간단한 것이기 때문에 B를 먼저 시도 할 것입니다. 매우 자세한 설명 주셔서 감사합니다. –
이 방법이 효과가 있다면 대답 옆에있는 체크 표시를 클릭하여 답변으로 표시해야합니다. 그렇게 다른 사람들은 그 질문이 답을 얻는다는 것을 압니다. 그리고 나는 신용을 얻는다. :-) (이전 질문에 대한 답변을 수락하지 못했습니다.) – AFoglia
죄송합니다. 지금 선택 했으므로 여전히 프로토콜에 익숙해 져 있습니다. –