Boost not seeing jamfile in current directory

8.5k views Asked by At

I'm trying to build the boost libraries as part of an open-source project I want to try to work on.

C:\boost_1_55_0>bootstrap.bat gcc
Building Boost.Build engine

Bootstrapping is done. To build, run:

    .\b2

[snip]

C:\boost_1_55_0>b2.exe --toolset=gcc
Unable to load Boost.Build: could not find "boost-build.jam"
---------------------------------------------------------------
BOOST_ROOT must be set, either in the environment, or
on the command-line with -sBOOST_ROOT=..., to the root
of the boost installation.

Attempted search from C:\boost_1_55_0 up to the root
at C:/share/boost-build
and in these directories from BOOST_BUILD_PATH and BOOST_ROOT: c:/boost_1_55_0.
Please consult the documentation at 'http://www.boost.org'.

C:\boost_1_55_0>dir *.jam
 [snip]

 Directory of C:\boost_1_55_0

09/21/2013  01:17 PM               866 boost-build.jam
09/21/2013  01:17 PM            18,083 boostcpp.jam
12/16/2013  03:36 PM                76 project-config.jam
               3 File(s)         19,025 bytes
               0 Dir(s)  34,868,432,896 bytes free

Toolset is MinGW/gcc, which is properly on my %PATH%.

So basically, somehow, boost isn't seeing the boost-build.jam file that's in the current directory.

Note that I have properly set BOOST_ROOT:

C:\boost_1_55_0>echo %BOOST_ROOT%
c:/boost_1_55_0

I'm kinda at my wit's end here. I've tried different permutations of back and forward slashes. Also, the error message from b2 includes the path C:/share/boost-build, which I have no idea where it's coming from. I've done a full search on the entire codebase, and can't see a config file which may be specifying it anywhere.


So I may need Boost.Build?

Anyways, following the instructions from here to build Boost.Build produces the exact same issue:

C:\boost_1_55_0\tools\build\v2>echo %BOOST_ROOT%
C:/boost_1_55_0

C:\boost_1_55_0\tools\build\v2>bootstrap.bat gcc
Bootstrapping the build engine

Bootstrapping is done. To build, run:

    .\b2 --prefix=DIR install


C:\boost_1_55_0\tools\build\v2>b2 --toolset=gcc --prefix=c:/pathutils install
Unable to load Boost.Build: could not find "boost-build.jam"
---------------------------------------------------------------
BOOST_ROOT must be set, either in the environment, or
on the command-line with -sBOOST_ROOT=..., to the root
of the boost installation.

Attempted search from C:\boost_1_55_0\tools\build\v2 up to the root
at C:/boost_1_55_0/tools/build/share/boost-build
and in these directories from BOOST_BUILD_PATH and BOOST_ROOT: C:\boost_1_55_0\tools\build\v2\test\startup\boost-root\build, C:/boost_1_55_0.
Please consult the documentation at 'http://www.boost.org'.
4

There are 4 answers

0
Fake Name On BEST ANSWER

Well, I can only assume that something in the %PATH% of my computer is breaking boost somehow.

I did the same setup procedure in a clean VM, and it seems to be compiling fine.

I have no idea what specifically is wrong.

12
oakad On

It's not looking for your Jamfile. It's looking for the boost.build tools subdirectory, the one which contains supporting jam scripts. On linux this will be a "/usr/share/boost-build/" by default, on windows you probably need to set BOOST_BUILD_PATH to point at where boost.build supporting scripts are installed:

http://www.boost.org/doc/libs/1_55_0/doc/html/bbv2/reference.html

0
Anders On

This looks like a pretty old question but, in case it helps anyone, I had the same issue and it was caused because I was in the /boost directory but needed to be in /boost/boost. When I changed directory to the subdirectory and ran ./bootstrap followed by ./b2 headers, it worked fine.

Slightly confusing that ./bootstrap had worked when I was in the /boost directory but there you go.

0
Jehedi Zafoom On

Binary builds of boost do not work at all, and attempting to build is futile.

5.1 Simplified Build From Source

If you wish to build from source with Visual C++, you can use a simple build procedure described in this section. Open the command prompt and change your current directory to the Boost root directory. Then, type the following commands:

bootstrap .\b2

This does not work due to the error in the original question.

5.2.1 Install Boost.Build

Boost.Build is a text-based system for developing, testing, and installing software. First, you'll need to build and install it. To do this:

Go to the directory tools\build\v2\.
Run bootstrap.bat
Run b2 install --prefix=PREFIX where PREFIX is the directory where you want Boost.Build to be installed
Add PREFIX\bin to your PATH environment variable.

This too does not work due to the error below:

Unable to load B2: could not find 'boost-build.jam'
---------------------------------------------------
Attempted search from 'C:sources\boost_1_75_0\tools\build' up to the root at 'C:sources\boost_1_75_0\tools\build\b2.EXE'
Please consult the documentation at 'https://boostorg.github.io/build/'.

The address in the error above says nothing whatsoever about how to use B2.

The design must be genius, but until something figures out that using the existing file in the same directory as b2.exe should be considered as a safe default, we, lowly devs, are SOL.