Hi Jim,
here is some divagation
# Jamroot contet follows #
project poline
: requirements <conditional>@arch_rule #you can use this one
# : default-build <conditional>@arch_rule #conditional does not work as expected
;
exe po : po.cpp
#: <conditional>@arch_rule #you can use it here and it seems ik
;
rule arch_rule ( properties * ) {
ECHO ciccio ; # ciccio:a friend of foo
local result ;
if <target-os>windows in $(properties) && ! <address-model>64 in $(properties) {
result += <address-model>32 ;
}
return $(result) ;
}
# Jamroot content stops here#
So in case we are trageting windows we go for address-model=32 except when address-model=64 is explicitly stated.
if we are targeting something else, well whatever it is we know we are not in troubles of choosing anything in the first place.
I don't think this is reallty nice, but it might be handy at some point.
I have found something nearly identical in boost.build docs. See Jurko links.
Best Regards,
Guido.
Actually this IS very nearly it:
project boost
: requirements
<include>"C:\\Program Files (x86)\\Boost\\include\\boost-1_35"
<address-model>32:<library-path>"C:\\Program Files (x86)\\Boost\\lib"
<address-model>64:<library-path>"C:\\Program Files\\Boost\\lib"
;
alias program_options ;
It does work as long as I specify the address-model on the command line.
I tried adding
<address-model>:<library-path>"C:\\Program Files (x86)\\Boost\\lib"
to act as a default, but that doesn't get added to the linker line.
Jim
From: Jim Talbut [mailto:jtalbut@spudsoft.co.uk] On Behalf Of t3@spudsoft.co.uk
Sent: 08 July 2008 17:58
To: 'Boost.Build developer's and user's list'
Subject: RE: [Boost-build] How to link in boost libraries using boost-build?
Unfortunately that's not it.
Does no-one actually have a working site-config that does this?
I guess everyone using boost-build has the boot source sitting around and links directly to the jamfiles in that, but I can't do that.
I have this in site-config.jam:
project boost
: usage-requirements
<include>"C:\\Program Files (x86)\\Boost\\include\\boost-1_35"
<address-model>32:<library-path>"C:\\Program Files (x86)\\Boost\\lib"
<address-model>64:<library-path>"C:\\Program Files\\Boost\\lib"
;
alias program_options
: # no sources
: # no build requirements
: # no default build
: # no additional usage requirements
;
And when I build it I get:
c:\Users\jtalbut\Projects\leonidas>bjam --debug-building
building project Jamfile</c:/Users/jtalbut/Projects/leonidas> ('object(project-target)@33') with
Building target './leonidas'
Build request:
Command line free features:
Target requirements: <toolset>msvc,<runtime-link>shared:<threading>multi
Common properties: <asynch-exceptions>off <debug-store>object <debug-symbols>on <exception-handling>on <extern-c-nothrow>off <hardc
ode-dll-paths>true <host-os>windows <inlining>off <install-dependencies>off <link>shared <midl-robust>yes <midl-stubless-proxy>yes <optimiza
tion>off <os>NT <pch>on <profiling>off <rtti>on <runtime-debugging>on <runtime-link>shared <stdlib>native <suppress-import-lib>false <symlin
k-location>project-relative <target-os>windows <threading>multi <toolset>msvc <user-interface>console <variant>debug <warnings-as-errors>off
<warnings>on
Building target '/program_options'
Build request: <asynch-exceptions>off <debug-store>object <debug-symbols>on <exception-handling>on <extern-c-nothrow>off <inli
ning>off <link>shared <midl-robust>yes <midl-stubless-proxy>yes <optimization>off <os>NT <pch>on <profiling>off <rtti>on <runtime-debugging>
on <runtime-link>shared <stdlib>native <target-os>windows <threading>multi <toolset>msvc <variant>debug <warnings-as-errors>off <warnings>on
Command line free features:
Target requirements:
Common properties: <asynch-exceptions>off <debug-store>object <debug-symbols>on <exception-handling>on <extern-c-nothrow>off <h
ardcode-dll-paths>true <host-os>windows <inlining>off <install-dependencies>off <link>shared <midl-robust>yes <midl-stubless-proxy>yes <opti
mization>off <os>NT <pch>on <profiling>off <rtti>on <runtime-debugging>on <runtime-link>shared <stdlib>native <suppress-import-lib>false <sy
mlink-location>project-relative <target-os>windows <threading>multi <toolset>msvc <user-interface>console <variant>debug <warnings-as-errors
>off <warnings>on
Usage requirements for program_options are
Build properties: <asynch-exceptions>off <debug-store>object <debug-symbols>on <exception-handling>on <extern-c-nothrow>off <h
ardcode-dll-paths>true <host-os>windows <inlining>off <install-dependencies>off <link>shared <midl-robust>yes <midl-stubless-proxy>yes <opti
mization>off <os>NT <pch>on <profiling>off <rtti>on <runtime-debugging>on <runtime-link>shared <stdlib>native <suppress-import-lib>false <sy
mlink-location>project-relative <target-os>windows <threading>multi <toolset>msvc <user-interface>console <variant>debug <warnings-as-errors
>off <warnings>on
Usage requirements from program_options are <include>/C:/Program Files (x86)/Boost/include/boost-1_35
Usage requirements for leonidas are <include>/C:/Program Files (x86)/Boost/include/boost-1_35
Build properties: <asynch-exceptions>off <debug-store>object <debug-symbols>on <exception-handling>on <extern-c-nothrow>off <hardc
ode-dll-paths>true <host-os>windows <include>/C:/Program Files (x86)/Boost/include/boost-1_35 <inlining>off <install-dependencies>off <link>
shared <midl-robust>yes <midl-stubless-proxy>yes <optimization>off <os>NT <pch>on <profiling>off <rtti>on <runtime-debugging>on <runtime-lin
k>shared <stdlib>native <suppress-import-lib>false <symlink-location>project-relative <target-os>windows <threading>multi <toolset>msvc <use
r-interface>console <variant>debug <warnings-as-errors>off <warnings>on
Usage requirements from leonidas are <include>/C:/Program Files (x86)/Boost/include/boost-1_35
...patience...
...found 340 targets...
...updating 1 target...
msvc.link bin\msvc\debug\threading-multi\leonidas.exe
LINK : fatal error LNK1104: cannot open file 'libboost_program_options-vc90-mt-gd-1_35.lib'
call "c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86 >nul
link /NOLOGO /INCREMENTAL:NO /DEBUG /subsystem:console /out:"bin\msvc\debug\threading-multi\leonidas.exe" @"bin\msvc\debug\threading-multi
\leonidas.exe.rsp"
if %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL%
if exist "bin\msvc\debug\threading-multi\leonidas.exe.manifest" (
mt -nologo -manifest "bin\msvc\debug\threading-multi\leonidas.exe.manifest" "-outputresource:bin\msvc\debug\threading-multi\leon
idas.exe;1"
)
...failed msvc.link bin\msvc\debug\threading-multi\leonidas.exe...
...failed updating 1 target...
c:\Users\jtalbut\Projects\leonidas>
I get almost exactly the same if I change the site-config to:
project boost
: requirements
<address-model>32:<library-path>"C:\\Program Files (x86)\\Boost\\lib"
<address-model>64:<library-path>"C:\\Program Files\\Boost\\lib"
: usage-requirements
<include>"C:\\Program Files (x86)\\Boost\\include\\boost-1_35"
;
alias program_options
: # no sources
: # no build requirements
: # no default build
: # no additional usage requirements
;
As Guido says, it's clear, a bit tricky and real - and I'd love to find that bjam can solve it, but so far it doesn't.
Jim
From: boost-build-bounces@lists.boost.org [mailto:boost-build-bounces@lists.boost.org] On Behalf Of Guido Ziliotti
Sent: 08 July 2008 09:07
To: Boost.Build developer's and user's list
Subject: Re: [Boost-build] How to link in boost libraries using boost-build?
Well that's it. Isn't it?
IMHO this example or something like should be considered for mentioning in some documentation. It's clear, a bit tricky and real.
And bjam solves it. With some Jurko help of course.
By the way is there a place where to have a complete list of <features>. I am well aware I am missing a lot of them.
On Tue, Jul 8, 2008 at 8:02 AM, Jurko Gospodnetiæ <jurko.gospodnetic@docte.hr> wrote:
Hi.
I tried this:
project boost : requirements
<address-model>
: usage-requirements <include>"C:\\Program Files
(x86)\\Boost\\include\\boost-1_35" <library-path>"C:\\Program Files (x86)\\Boost\\lib"
;
project boost : requirements
<address-model>32
: usage-requirements <include>"C:\\Program Files
(x86)\\Boost\\include\\boost-1_35" <library-path>"C:\\Program Files (x86)\\Boost\\lib"
;
project boost : requirements
<address-model>64
: usage-requirements <include>"C:\\Program Files\\Boost\\include\\boost-1_35" <library-path>"C:\\Program Files\\Boost\\lib"
;
alias program_options : # no sources
: # no build requirements
: # no default build
: # no additional usage requirements
;
Hmmm... how about something like:
> project boost
> : usage-requirements
> <include>"C:\\Program Files
> (x86)\\Boost\\include\\boost-1_35"> <address-model>32:<library-path>"C:\\Program Files (x86)\\Boost\\lib"
> <address-model>64:<library-path>"C:\\Program Files\\Boost\\lib"
> ;
Or you might actually mean requirements instead of usage-requirements here.
Note that I have not read the whole thread so I might be off the mark here, in which case - just ignore my blabbering... :-)
Best regards,
Jurko Gospodnetiæ
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build