1

Clementine for OS Xをコンパイルしようとしています。依存関係をコンパイルするプロセスの途中で、libplist-1.3 中に、コンパイラが string.h、assert.h などを見つけられないというエラーが発生します。その後、多数のエラーが発生します。従う。

なぜそうなるのかはわかりません。私は大規模な C プロジェクトでの作業経験があまりないので、なぜこれが起こっているのかを知るための指示をいただければ幸いです。Xcode コマンド ライン ツールを確実にインストールし、それらが最新であることを確認しました。また、標準ファイルは/usr/include.

makeビルド手順ごとに実行した後の出力:

cd libplist-1.3/build && PKG_CONFIG_PATH=/Users/dan/projects/sandbox/target/lib/pkgconfig cmake .. -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_INSTALL_PREFIX=/Users/dan/projects/sandbox/target -DQT_HEADERS_DIR=/Users/dan/projects/sandbox/target/include/ -DQT_LIBRARY_DIR=/Users/dan/projects/sandbox/target/bin -DENABLE_PYTHON=OFF
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    QT_HEADERS_DIR
    QT_LIBRARY_DIR


-- Build files have been written to: /Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/build
cd libplist-1.3/build && PATH=/Users/dan/projects/sandbox/target/bin:$PATH make -j2
[ 12%] [ 12%] Building C object src/CMakeFiles/plist.dir/plist.c.o
Building C object src/CMakeFiles/plist.dir/bplist.c.o
/Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/src/plist.c:23:20: error: string.h: No such file or directory
/Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/src/plist.c:24:20: error: assert.h: No such file or directory
In file included from /Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/src/plist.h:25,
                 from /Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/src/plist.c:25:
/Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/include/plist/plist.h:48:20: error: stdint.h: No such file or directory
/Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/include/plist/plist.h:52:23: error: sys/types.h: No such file or directory
In file included from /Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/src/plist.h:25,
                 from /Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/src/plist.c:25:
/Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/include/plist/plist.h:128: error: expected ‘)’ before ‘val’
/Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/include/plist/plist.h:137: error: expected ‘)’ before ‘val’
/Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/include/plist/plist.h:156: error: expected declaration specifiers or ‘...’ before ‘uint64_t’

.. などなど

アップデート:

-j2 フラグを削除すると、libplist は正常にビルドされます。今、私は新しいエラーを受け取っています:

Scanning dependencies of target libproxy
[ 54%] Building CXX object libproxy/CMakeFiles/libproxy.dir/extension_config.cpp.o
[ 57%] Building CXX object libproxy/CMakeFiles/libproxy.dir/extension_pacrunner.cpp.o
[ 60%] Building CXX object libproxy/CMakeFiles/libproxy.dir/extension_wpad.cpp.o
[ 63%] Building CXX object libproxy/CMakeFiles/libproxy.dir/proxy.cpp.o
/Users/dan/projects/sandbox/clementine-deps/macosx/libproxy-0.4.7/libproxy/proxy.cpp:433:15: error: use of undeclared identifier
      'strdup'; did you mean 'strcmp'?
4

1 に答える 1

1

コメントから部分的にコピー:

makeの代わりに でコンパイルしてみてくださいmake -j 2。コンパイル順序が台無しになる場合があり、これはリンク先のパッケージ サイトで明示的に言及されています。

の問題に関しては、関数は C およびC++ のstrdupstring.h で宣言されています。cstringパッケージが正しくビルドされていて、重複したヘッダーを作成したり、標準以外の場所からヘッダーを使用しようとしたりしない場合は、完全に新しいビルドから開始すると問題が解決する可能性があります。

それでも問題が解決しない場合は、cmakeログを調べて、インクルード パス内のディレクトリを探す必要があります。このディレクトリは、デフォルトのディレクトリの代わりに使用される可能string.hcstringがあります。このような場合は、必ずメンテナに通知し、これらのファイルまたはインクルード パスを単純に削除することが適切な修正であるかどうかを判断する必要があります。

それを超えて、サイトを通じてパッケージメンテナーに連絡する必要があると思います。

幸運を!

于 2012-06-14T17:08:30.613 に答える