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
、私がまだ慣れていないという事実を考えると、使用する正しいディレクティブに関するヒント/ポインターをいただければ幸いです。