2015-01-23 4 views
0

정의 플래그를 사용하여 빌드 할 두 개의 다른 대상을 선택할 수있는 프로젝트를 만들고 싶습니다.Boost와 Jamroot로 여러 대상을 작성하는 방법은 무엇입니까?

내 코드에서 예를 들어 나는

#ifdef LINUX 
... 
#else 
... 
# 

Jamroot 파일에 두 목표 사이에서 선택하는 가장 좋은 방법은 무엇입니까 여러 섹션을 가지고 있음도 가능하다? 루트 디렉토리에 두 개의 서로 다른 Jamroot 파일을 만들고 bjam을 사용하여 호출해야합니까? 내가 매뉴얼 섹션에서 찾은 것부터 bjam을 특정 Jamroot 파일로 호출 할 수는 없습니다.

내 예제 Jammroot 파일이 다음과 같이 가정합니다.

project myproj_linux 
     : 
    requirements 
     <define>LINUX 
; 

exe myprog_linux: 
    test/Jamfile 
    myprog.cpp 
    ; 

myproj_ose와 같은 파일에 추가 프로젝트를 추가 할 수 있습니까? 아니면 어떻게해야합니까? 아니면 다른 Jamfiles를 가질 수 있습니까? 예를 들어 Jamroot가 지정한 대상에 따라 호출하는 하위 디렉토리에 Jamfile.linux가 있습니까?

내 제안이 가능하지 않은 경우 어떻게이 문제를 해결할 수 있습니까?

project myproj 
    : requirements 
    <target-os>linux:<define>LINUX 
    <target-os>windows:<define>WINDOWS 
    ; 

exe myprog : test/Jamfile myprog.cpp ; 

당신은 docs 조건부 요구 사항에 대한 자세한 내용을보실 수 있습니다 :

답변

1

난 당신이 뭔가를하려는 생각합니다. 그러나 이것은 다른 옵션을 가진 동일한 프로그램을 만들뿐입니다. variations of a target to build을 변경할 수도 있습니다. 예 :

exe myprog : test/Jamfile myprog_linux.cpp : <target-os>linux ; 
exe myprog : test/Jamfile myprog_windows.cpp : <target-os>windows ; 
+0

그냥 질문입니다. 나는 이 일부 플랫 폼만을 지원한다는 것을 보았습니다. 대상 OS 목록에없는 다른 플랫폼을 빌드하려고한다고 가정합니다. 가능한가? – Euklides

+0

참고로, 이것은 테스트되지 않았습니다. 그러나 사용자 설정에'feature.extend target-os : ;'을 추가 할 수 있어야합니다. 그러면 Jamfiles에서 사용할 수있는 target-os에 값을 추가합니다. 끌어 오기 요청을 제출하여 BB에 직접 추가 할 수도 있습니다. – GrafikRobot

관련 문제