2014-07-01 13 views
1

나의 목표는 버전 정보를 포함하는 라이브러리를 만드는 것이다.bjam - 타겟을 빌드하기 전에 항상 쉘 스크립트를 실행하는 방법은 무엇입니까?

버전이 실제로 변경된 경우에만 ./version.cpp을 업데이트하는 스크립트가 있습니다. 이것은 불필요한 재건을 막기 위해서입니다.

glob 타겟이 *.cpp이고 version.cpp입니다.

bjam을 실행하면 스크립트가 실행되고 version.cpp을 업데이트하지만 라이브러리가 다시 작성되지 않는 문제가 있습니다.

만 나는 다시는 version.cpp가 변경된 것을보고, lib 디렉토리

내 잼 파일을 다시 않습니다 bjam를 실행하면 (2 회) bjam을 실행

Echo [ SHELL "./write_version.sh" ] ; 

lib foo 
    : [ glob *.cpp ] 
    ; 

출력 :에게

$ bjam 
Updating version.cpp 

...found 119 targets... 

$ bjam 
...found 121 targets... 
...updating 3 targets... 
gcc.compile.c++ ../foo/bin/gcc-4.8/debug/link-static/version.o 
gcc.archive ../foo/bin/gcc-4.8/debug/link-static/libfoo.a 
...updated 3 targets... 

질문 : 어떻게 얻을 수 있습니까? 스크립트와 라이브러리 빌드가 함께 작동합니까? 예 Jamfile에 :

답변