4

I would like to use the Boost Filesystem library. I am using CodeBolcks for development on Windows. I am following the "Getting Started on Windows". http://www.boost.org/doc/libs/1_53_0/more/getting_started/windows.html#install-boost-build. I made the following:

1) I downloaded and extracted boost to: d:\boost_1_53_0

2) I executed this:

D:\boost_1_53_0\tools\build\v2>bootstrap.bat gcc
Bootstrapping the build engine

Failed to bootstrap the build engine
Please consult bootstrap.log for furter diagnostics.

The log file contains:

###
### Using 'gcc' toolset.
###

D:\boost_1_53_0\tools\build\v2\engine>if exist bootstrap rd /S /Q bootstrap 

D:\boost_1_53_0\tools\build\v2\engine>md bootstrap 

D:\boost_1_53_0\tools\build\v2\engine>gcc -DNT -o bootstrap\jam0.exe  command.c compile.c constants.c debug.c execnt.c filent.c function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c object.c option.c output.c parse.c pathunix.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c md5.c pwd.c class.c w32_getreg.c native.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c 

D:\boost_1_53_0\tools\build\v2\engine>.\bootstrap\jam0 -f build.jam --toolset=gcc "--toolset-root= "  clean 
...found 1 target...
...updating 1 target...
...updated 1 target...

D:\boost_1_53_0\tools\build\v2\engine>.\bootstrap\jam0 -f build.jam --toolset=gcc "--toolset-root= "  
...found 50 targets...
...updating 2 targets...
[COMPILE] bin.ntx86\b2.exe

"gcc"   -o bin.ntx86\b2.exe "-DNDEBUG" "-DOPT_HEADER_CACHE_EXT" "-DOPT_GRAPH_DEBUG_EXT" "-DOPT_SEMAPHORE" "-DOPT_AT_FILES" "-DOPT_DEBUG_PROFILE" "-DOPT_FIX_TARGET_VARIABLES_EXT" "-DOPT_IMPROVED_PATIENCE_EXT" "-DNT" "-DYYSTACKSIZE=5000" "-pedantic" "-fno-strict-aliasing" "-s" "-O3" "-Wno-long-long" "command.c" "compile.c" "constants.c" "debug.c" "function.c" "glob.c" "hash.c" "hcache.c" "headers.c" "hdrmacro.c" "jam.c" "jambase.c" "jamgram.c" "lists.c" "make.c" "make1.c" "mem.c" "object.c" "option.c" "output.c" "parse.c" "regexp.c" "rules.c" "scan.c" "search.c" "subst.c" "w32_getreg.c" "timestamp.c" "variable.c" "modules.c" "strings.c" "filesys.c" "builtins.c" "pwd.c" "class.c" "native.c" "md5.c" "modules/set.c" "modules/path.c" "modules/regex.c" "modules/property-set.c" "modules/sequence.c" "modules/order.c" "execnt.c" "filent.c" "pathunix.c" 

...failed [COMPILE] bin.ntx86\b2.exe...
...removing bin.ntx86\b2.exe
...skipped bjam.exe for lack of b2.exe...
...failed updating 1 target...
...skipped 1 target...

As we see, the compilation fails. I do not know why. How to successfully install boost libraries?

Note: "gcc --version" returns the version of gcc

Thank you.

EDIT: I managed to create b2.exe, by executing

"gcc"   -o bin.ntx86\b2.exe "-DNDEBUG" "-DOPT_HEADER_CACHE_EXT" "-DOPT_GRAPH_DEBUG_EXT" "-DOPT_SEMAPHORE" "-DOPT_AT_FILES" "-DOPT_DEBUG_PROFILE" "-DOPT_FIX_TARGET_VARIABLES_EXT" "-DOPT_IMPROVED_PATIENCE_EXT" "-DNT" "-DYYSTACKSIZE=5000" "-pedantic" "-fno-strict-aliasing" "-s" "-O3" "-Wno-long-long" "command.c" "compile.c" "constants.c" "debug.c" "function.c" "glob.c" "hash.c" "hcache.c" "headers.c" "hdrmacro.c" "jam.c" "jambase.c" "jamgram.c" "lists.c" "make.c" "make1.c" "mem.c" "object.c" "option.c" "output.c" "parse.c" "regexp.c" "rules.c" "scan.c" "search.c" "subst.c" "w32_getreg.c" "timestamp.c" "variable.c" "modules.c" "strings.c" "filesys.c" "builtins.c" "pwd.c" "class.c" "native.c" "md5.c" "modules/set.c" "modules/path.c" "modules/regex.c" "modules/property-set.c" "modules/sequence.c" "modules/order.c" "execnt.c" "filent.c" "pathunix.c" 

I moved on the next step in the guide. Now, I get an argument error. What do you think?

D:\boost_1_53_0\tools\build\v2\engine\bin.ntx86>b2 --toolset=gcc "--prefix=D:\Program Files\CodeBlocks" install

notice: could not find main target install
notice: assuming it is a name of file to create.
D:/boost_1_53_0/tools/build/v2/build\project.jam:753: in attribute
warning: rulename $($(project).attributes).get expands to empty string
D:/boost_1_53_0/tools/build/v2/build\project.jam:765: in project.target
D:/boost_1_53_0/tools/build/v2\build-system.jam:708: in load
D:\boost_1_53_0\tools\build\v2\kernel\modules.jam:283: in import
D:\boost_1_53_0\tools\build\v2\kernel\bootstrap.jam:142: in boost-build
D:\boost_1_53_0\tools\build\v2\boost-build.jam:8: in module scope
D:/boost_1_53_0/tools/build/v2/build\project.jam:753: in project.attribute
warning: rulename $($(project).attributes).get expands to empty string
D:/boost_1_53_0/tools/build/v2/build\targets.jam:206: in object(project-target)@
45.__init__
D:/boost_1_53_0/tools/build/v2/kernel\class.jam:88: in new
D:/boost_1_53_0/tools/build/v2/build\project.jam:765: in project.target
D:/boost_1_53_0/tools/build/v2\build-system.jam:708: in load
D:\boost_1_53_0\tools\build\v2\kernel\modules.jam:283: in import
D:\boost_1_53_0\tools\build\v2\kernel\bootstrap.jam:142: in boost-build
D:\boost_1_53_0\tools\build\v2\boost-build.jam:8: in module scope
D:/boost_1_53_0/tools/build/v2/build\project.jam:753: in project.attribute
warning: rulename $($(project).attributes).get expands to empty string
D:/boost_1_53_0/tools/build/v2/build\targets.jam:226: in object(project-target)@45.get
D:/boost_1_53_0/tools/build/v2\build-system.jam:721: in load
D:\boost_1_53_0\tools\build\v2\kernel\modules.jam:283: in import
D:\boost_1_53_0\tools\build\v2\kernel\bootstrap.jam:142: in boost-build
D:\boost_1_53_0\tools\build\v2\boost-build.jam:8: in module scope
D:/boost_1_53_0/tools/build/v2\build-system.jam:722: in load
*** argument error
* rule project.load ( jamfile-location )
* called with: (  )
* missing argument jamfile-location
D:/boost_1_53_0/tools/build/v2/build\project.jam:53:see definition of rule 'project.load' being called
D:\boost_1_53_0\tools\build\v2\kernel\modules.jam:283: in import
D:\boost_1_53_0\tools\build\v2\kernel\bootstrap.jam:142: in boost-build
D:\boost_1_53_0\tools\build\v2\boost-build.jam:8: in module scope
Ababneh A
  • 1,104
  • 4
  • 15
  • 32
  • Run the compile command on the commandline, see what the error is. I don't see any includes, that might be the issue. – Jason Huntley Feb 14 '13 at 16:51
  • @Jason Thanks for the comment. However, I am not sure that I really understand your request. How to run compile from command line? Please, pardon my little knowledge – Ababneh A Feb 14 '13 at 17:00
  • @farm Open a command line window, change the directory to `D:\boost_1_53_0\tools\build\v2\engine`, then run the command that you see in the output logs `"gcc" -o bin.ntx86\b2.exe "-DNDEBUG" "-DOPT_HEADER_CACHE_EXT" "-DOP...` (and so on, too long to copy in this comment) – us2012 Feb 14 '13 at 17:08
  • @us2012 Good news! I executed the "gcc" -o bin.ntx86\b2.exe "-DNDEBUG" "-DOPT_HEADER_CACHE_EXT" "-DOP... command and it finished without any output. I guess this means that compilation was successful. Any ideas? – Ababneh A Feb 14 '13 at 17:41
  • @farm, If it finished without errors, there's a `b2` executable (that's `bjam` basically). – StoryTeller - Unslander Monica Feb 14 '13 at 17:58
  • @farm But that means that bootstrap.bat should work, too. What happens if you re-run bootstrap.bat? Do you get the same error AND the same log? – us2012 Feb 14 '13 at 18:38
  • @us2012 I reran bootstrap.bat gcc again, from the path /tools/build/v2, and it gave me the same error and the same log. However, it removed the b2.exe. So, I re-ran the "gcc" -o bin.ntx86\b2.exe "-DNDEBUG" "-DOPT_HEADER_CACHE_EXT" "-DOP... command to regenerate be.exe. And so it did. – Ababneh A Feb 14 '13 at 18:48
  • Okay, so now you have "b2.exe", even though manually, have you tried simply running the next step in the installation manual (5.3.1 step 3)? – us2012 Feb 14 '13 at 18:52
  • Yes, I did. However I got an argument error. I explained it in the update above. – Ababneh A Feb 14 '13 at 19:00
  • 1
    This `"--prefix=D:\Program Files\CodeBlocks"` should be this `--prefix="D:\Program Files\CodeBlocks"` – StoryTeller - Unslander Monica Feb 15 '13 at 09:15
  • got "Failed to build the B2 engine." with boost1.75.0 but worked for me with boost1.70.0 "Bootstrapping is done. To build, run: .." – florian.isopp Dec 23 '20 at 23:27

2 Answers2

4

In order to use Filesystem, I used another computer, and performed the following steps, and it worked:

1) Installed MinGW and added this enviroment variable => C:\MinGW\bin
2) Expanded boost_1_53_0 to c:\
3) cd c:\boost_1_53_0\tools\build\v2
4) bootstrap.bat gcc
5) b2 install --prefix="C:\Boostbuild" --toolset=gcc
6) Added this enviroment variable => C:\Boostbuild\bin
7) cd c:\boost_1_53_0
8) b2 --build-dir="C:\Boostbuild" toolset=gcc --build-type=complete stage
9) Installed CodeBlocks without MinGW
CodeBlocks:
10) Settings->Global variables: current variable => boost, Base => C:\boost_1_53_0, include => C:\boost_1_53_0\stage\lib
11) Create a new C++ console project, and right click on it:
Build Options->Choose Project Name on the left -> search directories
On compiler tab, press Add and type: $(#boost)
On linker tab, press Add and type: $(#boost.lib)
12) Right click on the C++ console project:
Build Options->Choose Project Name on the left -> linker settings
Add the following link libraries:
..\..\boost_1_53_0\stage\lib\libboost_filesystem-mgw46-mt-1_53.a
..\..\boost_1_53_0\stage\lib\libboost_system-mgw46-mt-1_53.a

Thanks everybody

Ababneh A
  • 1,104
  • 4
  • 15
  • 32
0

Try to install the c++ packages and the Windows 10 SDK. https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

J C
  • 1
  • 1