Boost logo

Boost Users :

Subject: Re: [Boost-users] How to write one property page .props to select the right x86 or x64 Boost libraries folder automatically using Visual Studio
From: Hickman, Steve (AdvTech) (Steve.Hickman_at_[hidden])
Date: 2016-05-19 22:50:41


You can do even better than this. :)

Take a look at the predefined Macros in VS. You'll find all sorts of things you can use to select 32 vs. 64 bit, which version of VS you're using, debug vs. release, etc. You can construct paths/ filenames using these macros to select what you want.

If that isn't enough, you can create subordinate property files that define additional macros that get pulled in automatically. For example, find attached a version.props file that I use to select which version of a MongoDB client to select and how to find the relevant client source/lib files. I have subdirectories named based on the version of VS I'm using, with a different version.props file in each. The VS2015.props file also attached selects which version.props file I want.

In this particular case I set an environment variable to identify whether I want VS2015.props or VS2012.props, etc. I then replaced this line:
        <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

in my VS project files with this line:

        <Import Project="$(FDX_HOME)\build\$(FDX_DEFAULT_TOOLSET).props" />

Where $(FDX_DEFAULT_TOOLSET) is the environment variable I set to select the version of VS I want to use.

Of course, you can use the same approach to select based on any criteria you want.

Regards,

Steve H.

-----Original Message-----
From: Marcel Raad [mailto:raad_at_[hidden]]
Sent: Thursday, May 19, 2016 9:42 AM
To: boost-users_at_[hidden]
Subject: Re: [Boost-users] How to write one property page .props to select the right x86 or x64 Boost libraries folder automatically using Visual Studio

pabristow wrote
> I have downloaded the shiny new release boost_1_61_0_b1 and am trying
> to set up so that I can test a lot of Boost-ish console applications
> using both 32 and 64-bit.
>
> This is easier with bjam, but I'd like to use the Visual studio IDE too.
>
> I'd like a single property page that can be placed in the same folder
> as my .sln file and added to each and every project.
>
> (or better, made the default for all projects).
>
> I have a I:\boost_1_61_0_b1; as the include directory, and that is
> common to all configurations and platforms.
>
> But the libraries files are in two separate folders because the name
> does not yet include the platform :-(
>
> Linking to lib file: libboost_chrono-vc140-mt-gd-1_61.lib
>
> lib32-msvc-14.0 and lib64-msvc-14.0
>
> Googling gives some suggestions to select the right folder for
> libraries, but I wonder if anyone has found a slick solution?
>
> (I'll edit the property xml if necessary - it would seem that the IDE
> GUI tool isn't up to the job?)

In the "Link" section of the property sheet XML file:
<AdditionalLibraryDirectories>I:\boost_1_61_0_b1\lib$(PlatformArchitecture)-msvc-14.0\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
You can also do this in the GUI via Linker -> General -> Additional Library Directories.

Or, to have more flexibility with the path, but not possible via the GUI:
<AdditionalLibraryDirectories
Condition="'$(PlatformTarget)'=='x86'">I:\boost_1_61_0_b1\lib32-msvc-14.0\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories
Condition="'$(PlatformTarget)'=='x64'">I:\boost_1_61_0_b1\lib64-msvc-14.0\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

Hope that helps,
Marcel

--
View this message in context: http://boost.2283326.n4.nabble.com/How-to-write-one-property-page-props-to-select-the-right-x86-or-x64-Boost-libraries-folder-automatico-tp4686269p4686272.html
Sent from the Boost - Users mailing list archive at Nabble.com.






Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net