Commit d62f301 adds option --includedir[=/path] to install headers. Most headers are copied with their full paths; moses/src/* is installed at the root.
On 02/13/2012 09:19 AM, Sylvain Raybaud wrote: > On Thursday 02 February 2012 21:56:28 Kenneth Heafield wrote: >>>> With regard to headers, we could install them by appending these lines >>>> to Jamroot: >>>> >>>> includedir = [ option.get "includedir" : $(prefix)/include ] ; >>>> >>>> install prefix-header : >>>> [ glob-tree *.h *.hh : jam-files dist ] : >>>> <location>$(includedir)<install-source-root>. ; >>>> >>>> But the issue is that the headers are bad at finding themselves i.e. the >>>> moses/src directory expects to find everything relative to that path. I >>>> guess we could move them up like so: >>>> >>>> install prefix-header : >>>> [ glob-tree *.h *.hh : jam-files dist ] : >>>> <location>$(includedir)<install-source-root>moses/src ; >>>> >>>> But I don't want to pollute a system's top-level headers with every >>>> moses/src header. >>> >>> I'm not familiar with bjam so I don't really understand what's happening >>> there... Maybe we could create some sort of "public headers list"? Or just >>> put every header in $(includedir)/moses so that the system level >>> directory is not polluted, and one would just have to add >>> -I$(includedir)/moses to one's compile flags in order to use Moses API? >>> otherwise, what would you suggest to be able to use moses libraries? >>> -I/path/to/mosesdecoder/moses/src? >> If you take my first suggestion and append it to Jamroot (in the >> top-level directory): >> >> includedir = [ option.get "includedir" : $(prefix)/include ] ; >> install prefix-header : >> [ glob-tree *.h *.hh : jam-files dist ] : >> <location>$(includedir)<install-source-root>moses/src ; >> >> then run the same bjam command as you did before, it will install all >> *.h and *.hh files (except those in dist or jam-files) and preserve >> their directory structure. For example, lm/blank.hh will be installed >> in /usr/include/lm/blank.hh (assuming --prefix=/usr). This will work as >> expected because the code says: >> >> #include "lm/blank.hh" >> >> However, e.g. moses/src/AlignmentInfoCollection.h says: >> >> #include "AlignmentInfo.h" >> >> so you will need to add -I/usr/include/moses/src in order to help it >> find AlignmentInfo.h. > > Hello > > It seems the suggest fix doesn't work. I get: > > sylvain@markov ~/loria/mosesdecoder $ sudo nice ./bjam -j4 --with- > giza=/home/sylvain/loria/GIZAPP/giza-pp/bin/ link=shared -a > Password: > warning: No toolsets are configured. > warning: Configuring default toolset "gcc". > warning: If the default is wrong, your build may not work correctly. > warning: Use the "toolset=xxxxx" option to override our guess. > warning: For more configuration options, please consult > warning: http://boost.org/boost- > build2/doc/html/bbv2/advanced/configuration.html > /home/sylvain/loria/mosesdecoder/jam-files/boost-build/build/virtual- > target.jam:1079: in virtual-target.register-actual-name from module virtual- > target > error: Duplicate name of actual target: > <p/home/sylvain/loria/mosesdecoder/dist/include<install-source- > root>/moses/src>bhiksha.hh > error: previous virtual target { common%common.copy-bhiksha.hh. { > kenlm/bhiksha.hh. } } > error: created from ./prefix-header > error: another virtual target { common%common.copy-bhiksha.hh. { > lm/bhiksha.hh. } } > error: created from ./prefix-header > error: added properties: none > error: removed properties: none > /home/sylvain/loria/mosesdecoder/jam-files/boost-build/build/virtual- > target.jam:490: in actualize-no-scanner from module object(file-target)@2538 > /home/sylvain/loria/mosesdecoder/jam-files/boost-build/build/virtual- > target.jam:135: in object(file-target)@2538.actualize from module object(file- > target)@2538 > /home/sylvain/loria/mosesdecoder/jam-files/boost-build/build-system.jam:749: > in > load from module build-system > ./jam-files/boost-build/kernel/modules.jam:283: in import from module modules > ./jam-files/boost-build/kernel/bootstrap.jam:142: in boost-build from module > ./jam-files/boost-build/boost-build.jam:8: in module scope from module > > It looks like it gets confused because of the symlink kenlm->lm. I guess I > should tell it to ignore one of them. Do you have an idea how to do that? > > regards, > _______________________________________________ Moses-support mailing list Moses-support@mit.edu http://mailman.mit.edu/mailman/listinfo/moses-support