RHEL 6.4 ボックスで 3.3RPM用のパッケージをビルドしようとしています。libc++静的ライブラリと共有ライブラリの両方が必要です。それで、私はいくつかの基本を学びcmake、バンドルされている を修正しましたCMakeList.txt。その部分が機能するようになりました。
しかし、RHEL 6.x では、すべての 64 ビット ライブラリは/usr/lib64ではなく に移動する必要/usr/libがあるため、次を使用して作業を完了しようとしています。
(A) ビルド中に、私は使用します
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX})
すべてのライブラリ ファイル (*.so*および*.a) をlib64ではなくに配置しlibます。
(B)ADD_LIBRARY...以下に示すようにコマンドを使用する
ADD_LIBRARY(c++ STATIC ...
一緒に
set_target_properties(c++ PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX})
INSTALL(TARGETS c++
ARCHIVE DESTINATION lib${LIB_SUFFIX})
にインストールされているスタティック ライブラリを取得します/usr/lib64。
(C) さらに、
INSTALL(FILES ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX}/libc++.so DESTINATION lib${LIB_SUFFIX})
INSTALL(FILES ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX}/libc++.so.1 DESTINATION lib${LIB_SUFFIX})
INSTALL(FILES ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX}/libc++.so.1.0 DESTINATION lib${LIB_SUFFIX})
共有ライブラリもインストールする必要があり/usr/lib64ます。
/usr/libただし、結果の RPM には共有ライブラリのコピーがまだインストールされています。どうすれば防ぐことができますか?
RPMspecファイルを作成する場合、_libdirマクロはこれを自動的に処理します。ではcmake、私がまだ慣れていないという事実を考えると、使用する正しいディレクティブに関するヒント/ポインターをいただければ幸いです。