Как изменить путь включения с помощью BJAM - PullRequest
2 голосов
/ 02 августа 2010

У меня следующая структура каталогов:

  • APPDIR/
  • APPDIR/APPHDRS (имеет * .h)
  • APPDIR/APPLIBSRCS (имеет *.cpp нужно создать библиотеку, скажем libtest.a)
  • APPDIR/APPMAIN (есть main.cpp, который будет компилироваться, если g ++ получает аргументы -I $HOME/APPINSTALLDIR и -L $HOME/APPINSTALLDIR/LIB)

Я получил заголовки для установки, добавив APPDIR/Jamroot:

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

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

Может кто-нибудь помочь мне в Jamfiles для libtest.a и main.cpp?

Ответы [ 2 ]

2 голосов
/ 29 декабря 2010

В моем jamroot.jam у меня есть что-то вроде следующего:

(я изменяю имена в вашей структуре каталогов, поэтому могу сделать опечатку)

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

В моем ./appdirКаталог / build У меня есть файл 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 ;
1 голос
/ 30 декабря 2010

Мое настоящее решение: 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
    ;
...