Missing <arch-and-model> if using msvc

Open
#730 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
52/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Stale
Tech stack
cpp
Domain
build-system

Research direction

Start in src/contrib/boost.jam at the tag_versioned rule referenced by the issue. Reproduce the report with b2 architecture=x86 address-model=64 and inspect the generated MSVC library name. Done means the x64 build requests the architecture-qualified library and completes successfully.

Written by the indexing model from the issue text.

Description

I use b2 to compile a simple example, and got an error with msvc/Windows:

$ b2
...patience...
...found 817 targets...
...updating 1 target...
msvc.link bin\msvc-14.2\release\cxxstd-latest-iso\threading-multi\test_boost.exe
LINK : fatal error LNK1181: cannot open input file 'boost_program_options-vc142-mt-1_76.lib'

        call "bin\standalone\msvc\msvc-14.2\msvc-setup.bat"  >nul
 link /NOLOGO /INCREMENTAL:NO "bin\msvc-14.2\release\cxxstd-latest-iso\threading-multi\main.obj"    "boost_program_options-vc142-mt-1_76.lib"  /MACHINE:X64 /MANIFEST:EMBED /subsystem:console /out:"bin\msvc-14.2\release\cxxstd-latest-iso\threading-multi\test_boost.exe" /LIBPATH:"C:\dev\lib"

...failed msvc.link bin\msvc-14.2\release\cxxstd-latest-iso\threading-multi\test_boost.exe...
...failed updating 1 target...

The file boost_program_options-vc142-mt-1_76.lib should be boost_program_options-vc142-mt-x64-1_76.lib.

https://github.com/boostorg/build/blob/d52f1993d906aa3fd3649a8dd5134402794bf86e/src/contrib/boost.jam#L306

After looking up boost.jam, I think on Windows this should be:

rule tag_versioned ( name : type ? : property-set )
{
    return [ common.format-name <base> <toolset> <threading> <runtime> <arch-and-model>
        -$(.version_tag) -$(.build_id) : $(name) : $(type) : $(property-set) ] ;
}

After adding , b2 architecture=x86 address-model=64 succeeded.

Dominant language
C++
Stars
251
Forks
63
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from boostorg/build

All issues in boostorg/build

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.