1

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

4

2 に答える 2

0

私が見ることができるもの:

1) にスペースがARCHIVE_OUTPUT_DIRECTORY${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX})ありません。ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX})

2) を使用する場合、.so ファイルはいつビルドされますADD_LIBRARY(c++ STATIC ...か?

于 2013-07-27T23:28:17.573 に答える