0

Lion を実行している Mac でAdob​​e Source Libraries (ASL)をコンパイルしようとすると、さまざまな問題が発生します。MacPorts GCC-4.7 を使用しています (C++11 が好きです)。

ダウンロードして、url を downloads.sourceforge.net を指すように変更して、asl_1.0.43_net_setup.sh を編集しました。

~/user-config.jam を編集して、gcc を使用し、-std=c++11 フラグを渡すように bjam に指示しました。

import toolset : using ; using darwin ;
using gcc
    : 47 
    : g++-mp-4.7 
    : <cxxflags>"-std=c++11"
    ;

bjam に 64 ビット バージョンを作成するように指示するフラグを使用してビルドします: bjam toolset=gcc-47 -j 4 address-model=64 architecture=x86

次のエラー メッセージが表示され続けます (複数回): documentation/examples/namespace.cpp:1:0: error: CPU you selected does not support x86-64 instruction set

64 ビットを使用するように指示したにもかかわらず、bjam は (ばかげて) -march=i486 を設定しているようで、上記の問題を引き起こしています。理想的には、カスタム バージョンをビルドせずに、既存のインストール済みブーストと TBB を使用して ASL をコンパイルできます。

これまでにすでに数時間を費やしており、それをチャックする準備ができています。これには多くの可能性があるように見えますが、ビルド システムには柔軟性がありません (これが、私が jam や bjam を使用しない理由です)。

誰もがclangまたはGCCのいずれかを使用して最新のMacでこれを構築するためのヒントを持っていますか? (GCC: XCode に付属するバージョンではありません)。

[編集] i486 ビットを見つけて削除しました。現在、C++11 コンパイラでのコンパイルに問題があると思われる問題が発生しています。

./adobe/closed_hash.hpp:691:88: error: 'insert' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
./adobe/closed_hash.hpp:691:88: note: declarations in dependent base    'adobe::version_1::closed_hash_set<adobe::pair<adobe::version_1::name_t, adobe::version_1::any_regular_t>, adobe::get_element<0, adobe::pair<adobe::version_1::name_t, adobe::version_1::any_regular_t> >, boost::hash<adobe::version_1::name_t>, std::equal_to<adobe::version_1::name_t>, adobe::version_1::capture_allocator<adobe::pair<adobe::version_1::name_t, adobe::version_1::any_regular_t> > >' are not found by unqualified lookup
./adobe/closed_hash.hpp:691:88: note: use 'this->insert' instead

[編集] うーん、実際には、g++ が許容していた adobe コードのバグのように見えますが、現在はそうではありません。ASL は最新の (ほぼ) C++11 準拠のコンパイラに対してコンパイルされていないようです。

今、adobe スクリプトがダウンロードしたバージョンの boost にコンパイルの問題が見られます (シグナル ライブラリには明らかに一部の移動コンストラクターにバグがあり、GCC はそれを訴えています):

../boost_libraries/boost/smart_ptr/shared_ptr.hpp:168:25: note: 'boost::shared_ptr<boost::signals::detail::basic_connection>::shared_ptr(const boost::shared_ptr<boost::signals::detail::basic_connection>&)' is implicitly declared as deleted because 'boost::shared_ptr<boost::signals::detail::basic_connection>' declares a move constructor or move assignment operator
4

1 に答える 1

0

私は、bjam によって導入されたすべての複雑さを理解しようとすることをあきらめました。

代わりに、cmake、gcc-47、clang-3.2 で構築している ASL の github でフォークを開始しました。コードにいくつかのマイナーな修正を加え、ディレクトリの 1 つを警告なしでコンパイルしました。

https://github.com/tfiner/adobe_asl

[編集] 数時間汗を流した後、私は最終的に、boost 1.49、TBB 4.0、および OS X 10.6 を使用して、clang 3.2 によってビルドされた 2 つの光沢のあるライブラリを手に入れました。気軽に github からクローンを作成してください。うまく機能するようになったら、お知らせください。

于 2012-06-21T21:08:31.467 に答える