2010-08-02 21 views
2

je la structure de répertoire suivant:Comment changer include_path en utilisant bjam

  • APPDIR/
  • APPDIR/APPHDRS (a * .h)
  • APPDIR/APPLIBSRCS (a * .cpp besoin de faire une bibliothèque, par exemple libtest.a)
  • APPDIR/APPMAIN (a main.cpp qui compilera si g ++ obtient args -I $HOME/APPINSTALLDIR et -L $HOME/APPINSTALLDIR/LIB)

J'obtenu des en-têtes à installer en ajoutant APPDIR/Jamroot:

local headers = [ path.glob-tree $HOME/APPDIR : *.h ] ; 

install headers     
    : $(headers) 
    : <location>$HOME/APPINSTALLDIR <install-source-root>$HOME/APPDIR 
; 

Quelqu'un pourrait-il me s'il vous plaît aider à Jamfiles pour le libtest.a et main.cpp?

Répondre

1

Ma solution actuelle: APPDIR/Jamroot.jam:

path-constant PROJECT_ROOT : . ; 
path-constant BOOST_INCLUDE_BASE : /apps/boost/include ; 
path-constant BOOST_LIB_BASE : /apps/boost/lib ; 

local headers = [ path.glob-tree $(PROJECT_ROOT) : *.hpp ] ; 


install headers 
    : $(headers) 
    : <location>$(PROJECT_ROOT)_install <install-source-root>$(PROJECT_ROOT) 
    ; 

project basetrade 
    : requirements <include>$(PROJECT_ROOT)_install 
        <include>$(BOOST_INCLUDE_BASE) 
     <variant>release:<cxxflags>-O2 
     <variant>debug:<inlining>off 
     <variant>debug:<debug-symbols>on 
     <variant>debug:<optimization>off 
     <variant>debug:<warnings>on 
    ; 

build-project APPLIBSRCS ; 
build-project APPMAIN ; 

APPLIBSRCS/Jamfile.jam:

project : usage-requirements <include>$(PROJECT_ROOT)_install ; 
lib Utils : [ glob *.cpp ] : <link>static ; 
install libUtils 
    : Utils 
    : <install-type>LIB 
    <variant>release:<location>"$(PROJECT_ROOT)_install/lib" 
    <variant>debug:<location>"$(PROJECT_ROOT)_install/libdebug" 
    : release debug 
    ; 

APPMAIN/Jamfile.jam:

project : usage-requirements <include>$(PROJECT_ROOT)_install ; 
use-project /PLIBSRCS : ../APPLIBSRCS ; 

exe tradeexec 
    : main.cpp 
     /PLIBSRCS//libUtils 
    : 
    : <variant>debug <variant>release 
    ; 

install install-bin 
    : tradeexec 
    : <variant>release:<location>"$(PROJECT_ROOT)_install/bin" 
     <variant>debug:<location>"$(PROJECT_ROOT)_install/bindebug" 
    : release debug 
    ; 
2

Dans mon jamroot.jam j'ai quelque chose comme suit

(je change le nom à la structure de votre répertoire afin que je puisse faire une faute de frappe)

#Name this location $(TOP), 
path-constant TOP : . ; 
#build project 
build-project ./appdir/build ; 

Dans mon répertoire ./appdir/build J'ai un fichier contenant Jamfile.v2

project applib 
    : source-location ../applibsrcs 
    : default-build <threading>multi 
    : build-dir $(TOP)/build 
    : usage-requirements <include>../apphdrs 
    : requirements 
    <include>../apphdrs 
; 
lib applib : applib.cpp (and the rest of the cpp files) 
       ; 

#notice the applib is included in the sources 
exe appmain : ../appmain/appmain.cpp applib ; 

install headers 
    : [ glob ../apphdrs/*.hpp ] 
    : <location>$(TOP)/include 
     <install-source-root>../include 
; 

install applib-lib : applib : <location>$(TOP)/lib <install-type>LIB ; 


install appmain-exe : appmain : <location>$(TOP)/bin ;