Building Boost with Boost.Log "error: target {simple_event_log.mc.} Not of type"

I am trying to create Boost.Log ( http://boost-log.sourceforge.net/libs/log/doc/html/index.html ). I added it to my boost sources and ran my usual boost build command.

b2 --build-dir="D:\boost\1.51.0\boost" toolset=gcc variant=release link=static threading=multi runtime-link=static --build-type=complete 

But nothing happened, and I got this at the end:

 D:/boost/1.51.0/src/tools/build/v2/build\generators.jam:1085: in ensure-type from module generators error: target { simple_event_log.mc. } has no type D:/boost/1.51.0/src/tools/build/v2/build\generators.jam:1319: in generators.construct from module generators D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:1495: in construct from module object(typed-target)@491 D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:1298: in object(typed-target)@491.generate from module object(typed-target)@491 D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:732: in generate-really from module object(main-target)@1871 D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:704: in object(main-target)@1871.generate from module object(main-target)@1871 D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:258: in object(project-target)@474.generate from module object(project-target)@474 D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:848: in targets.generate-from-reference from module targets D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:1217: in generate-dependencies from module object(install-target-class)@96 D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:1269: in object(install-target-class)@96.generate from module object(install-target-class)@96 D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:732: in generate-really from module object(main-target)@930 D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:704: in object(main-target)@930.generate from module object(main-target)@930 D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:848: in targets.generate-from-reference from module targets D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:1217: in generate-dependencies from module object(top-level-target)@103 D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:1269: in alias-target-class.generate from module object(top-level-target)@103 D:/boost/1.51.0/src\boostcpp.jam:391: in build-multiple from module object(top-level-target)@103 D:/boost/1.51.0/src\boostcpp.jam:376: in object(top-level-target)@103.generate from module object(top-level-target)@103 D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:732: in generate-really from module object(main-target)@934 D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:704: in object(main-target)@934.generate from module object(main-target)@934 D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:848: in targets.generate-from-reference from module targets D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:1217: in generate-dependencies from module object(top-level-target)@104 D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:1269: in alias-target-class.generate from module object(top-level-target)@104 D:/boost/1.51.0/src\boostcpp.jam:391: in build-multiple from module object(top-level-target)@104 D:/boost/1.51.0/src\boostcpp.jam:376: in object(top-level-target)@104.generate from module object(top-level-target)@104 D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:732: in generate-really from module object(main-target)@935 D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:704: in object(main-target)@935.generate from module object(main-target)@935 D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:258: in object(project-target)@42.generate from module object(project-target)@42 D:/boost/1.51.0/src/tools/build/v2\build-system.jam:736: in load from module build-system D:\boost\1.51.0\src\tools\build\v2/kernel\modules.jam:283: in import from module modules D:\boost\1.51.0\src\tools\build\v2/kernel/bootstrap.jam:142: in boost-build from module D:\boost\1.51.0\src\boost-build.jam:17: in module scope from module 

Could you explain what this means or how I can see more error information? How did you create Boost.Log?

+4
source share
2 answers

The answer to the problem can be found here :

Secondly, at some point, the library will need a message compilation tool (mc.exe), which is not available in MinGW, Cygwin, and MSVC Express Edition. You have two options for solving the problem. In the case of MinGW and Cygwin, you can use the windmc.exe tool, which is similar to the original mc.exe. For this you will need Boost.Build Files (in particular, the tools / build / v 2 / tools / mc.jam file), as described in this ticket. After that, you can specify the parameter mc-compiler = windmc for bjam to create the library.

Here is the link to patch . Applying the patch and passing mc-compiler=windmc should solve the problem.

Note: Also, as noted in the comments on the ticket , you need to add import mc ; after import fortran ; in tools\build\v2\tools\gcc.jam .

Here's what your mc.jam file looks like after applying the patch (make sure your file looks like this):

 import common ; import generators ; import feature : feature get-values ; import toolset : flags ; import type ; import rc ; feature.feature mc-compiler : mc windmc : propagated ; feature.set-default mc-compiler : mc ; rule init ( ) { } type.register MC : mc ; # Command line options feature mc-input-encoding : ansi unicode : free ; feature mc-output-encoding : unicode ansi : free ; feature mc-set-customer-bit : no yes : free ; flags mc.compile MCFLAGS <mc-input-encoding>ansi : -a ; flags mc.compile MCFLAGS <mc-input-encoding>unicode : -u ; flags mc.compile MCFLAGS <mc-output-encoding>ansi : -A ; flags mc.compile MCFLAGS <mc-output-encoding>unicode : -U ; flags mc.compile MCFLAGS <mc-set-customer-bit>no : ; flags mc.compile MCFLAGS <mc-set-customer-bit>yes : -c ; generators.register-standard mc.compile.mc : MC : H RC : <mc-compiler>mc ; generators.register-standard mc.compile.windmc : MC : H RC : <mc-compiler>windmc ; actions compile.mc { mc $(MCFLAGS) -h "$(<[1]:DW)" -r "$(<[2]:DW)" "$(>:W)" } actions compile.windmc { windmc $(MCFLAGS) -h "$(<[1]:DW)" -r "$(<[2]:DW)" "$(>:W)" } 

Attention

boost-log\branches\bleeding-edge will not compile for me (gcc 4.7.1). I used one in boost-log\trunk\boost-log for a successful build (built on 2012-09-05).

+2
source

Try:

 b2 toolset=gcc --build-type=complete threading=multi architecture=x86 address-model=32 --with-log define=BOOST_LOG_USE_CHAR --stagedir=. 

It worked for me with Boost 1.51 and Boost :: Log rev. 721

0
source

Source: https://habr.com/ru/post/1431999/


All Articles