4

Boost.Log ( http://boost-log.sourceforge.net/libs/log/doc/html/index.html ) を構築しようとしています。これをブースト ソースに追加し、通常のブースト ビルド コマンドを実行しました。

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

しかし、何も起こらず、最終的にこれを受け取りました:

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                                   

それが何を意味するのか、またはエラー情報をもっと見る方法を教えてください。Boost.Log はどのように作成しましたか?

4

2 に答える 2

2

問題への答えはここにあります:

第 2 に、ある時点で、ライブラリには Message Compiler ツール (mc.exe) が必要になりますが、これは MinGW、Cygwin、および MSVC Express Edition では使用できません。問題を解決するには、2 つのオプションがあります。MinGW と Cygwin の場合、元の mc.exe の類似物である windmc.exe ツールを使用できます。そのためには、このチケットで説明されているように、Boost.Build ファイル (特に tools/build/v2/tools/mc.jam ファイル) にパッチを適用する必要があります。その後、mc-compiler=windmc オプションを bjam に指定してライブラリをビルドできるようになります。

ここにパッチへのリンクがあります。パッチを適用して渡すとmc-compiler=windmc、問題が解決するはずです。

注:また、チケットimport mc ;のコメントに記載されているように、後import fortran ;に inを追加する必要がありますtools\build\v2\tools\gcc.jam

パッチを適用した後の mc.jam ファイルは次のようになります (ファイルが次のようになっていることを確認してください)。

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)" 
} 

警告

boost-log\branches\bleeding-edgeコンパイルに失敗しました(gcc 4.7.1)。boost-log\trunk\boost-log成功したビルド (2012-09-05 にビルド)の 1 つを使用しました。

于 2012-09-19T00:27:55.670 に答える
0

試す:

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

Boost1.51とBoost::Logrevで動作していました。721

于 2012-09-05T13:56:14.540 に答える