Хорошо, это, похоже, не так просто, как я думал, поэтому я разработал решение самостоятельно. Он использует сценарий для достижения конечного результата, поэтому я все еще надеюсь, что у гуру Jam будет решение только для джема.
SubDir . ;
SubInclude . src ;
SubInclude . test ;
- Создайте Jamfile в каталоге Src
SubDir .. src ;
Library mylib : mylib.c ;
- Создайте Jamfile в тестовом каталоге
SubDir .. test ;
Main mytest : mytest.c ;
Depends mytest : mylib$(SUFLIB) ;
С помощью этой установки, до тех пор, как я нахожусь в корневом каталоге, всякий раз, когда я пытаюсь построить MyTest библиотеки также будет перекомпилировать (в случае необходимости). Я нашел старое сообщение в списке рассылки jammer, описывающем его.
Увы, это не сработает, если я попал в подкаталог test, так как jam может выглядеть только down в подкаталоги.
Итак, я создал простой скрипт jmk
и положить его вместе с jam
исполняемым (так что оба находятся в пути):
if [ "$JMKROOT" = "" ] ; then
JMKROOT=`pwd`
export JMKROOT
fi
cd $JMKROOT
jam $*
и я установить переменные окружения JMKROOT в корень мои проект.
Ибо, когда я скомпилировать в оболочке Windows, (именно поэтому я хочу использовать Jam) Я просто использовать этот маленький jmk.bat
пакетный файл:
@echo off
if "%JMKROOT%" EQU "" set JMKROOT=%CD%
set OLDCD=%CD%
cd %JMKROOT%
jam %1 %2 %3 %4 %5 %6 %7 %8 %9
cd %OLDCD%