Ok, cela ne semble pas être une question aussi facile que je le pensais alors j'ai travaillé sur une solution par moi-même. Il utilise un script pour atteindre le résultat final, alors j'espère toujours qu'un Jam Gourou aura une solution de confiture seulement.
SubDir . ;
SubInclude . src ;
SubInclude . test ;
- Créer une Jamfile dans le répertoire src
SubDir .. src ;
Library mylib : mylib.c ;
- Créez un fichier Jamfile dans le répertoire de test
SubDir .. test ;
Main mytest : mytest.c ;
Depends mytest : mylib$(SUFLIB) ;
Avec ce réglage, tant que je suis dans le répertoire racine, chaque fois que j'essaie de construire mytest la bibliothèque sera également recompilé (si nécessaire). J'ai trouvé un vieux message sur la liste de diffusion du jammer le décrivant.
Hélas, cela ne fonctionne pas si je suis dans le sous-répertoire de test car jam ne peut que regarder vers le bas dans les sous-répertoires.
Donc, j'ai créé un script simple appelé jmk
et le mettre en même temps que l'exécutable jam
(de sorte que les deux sont dans le chemin):
if [ "$JMKROOT" = "" ] ; then
JMKROOT=`pwd`
export JMKROOT
fi
cd $JMKROOT
jam $*
et je mets la variable d'environnement JMKROOT à la racine de mon projet.
Car quand je compile dans un shell Windows (c'est pourquoi je veux utiliser Jam) J'utilise simplement ce petit fichier batch 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%