我一直在嘗試在今晚的Ubuntu 12.04LTS 64bit盒子上爲LLVM libC++ 3.4創建deb。我想先創建一個只包含/usr/lib64/libc++.a
而沒有任何標題的deb。是的,我知道根據Debian library packaging guide,我應該將文件包含在*-dev
包中,但是對於cmake
和cpack
是新的,我希望逐步達到此目的。Cmake/cpack:如何創建一個沒有頭文件的libC++靜態庫deb?
所以,我首先改變所述libcxx-3.4/lib/CMakeLists.txt
,並增加了如果檢查(參見線14和18)
$ cat CMakeLists.txt
1 if (NOT LIBCXX_INSTALL_SUPPORT_HEADERS)
2 set(LIBCXX_SUPPORT_HEADER_PATTERN PATTERN "support" EXCLUDE)
3 endif()
4
5 file(COPY .
6 DESTINATION "${CMAKE_BINARY_DIR}/include/c++/v1"
7 FILES_MATCHING
8 PATTERN "*"
9 PATTERN "CMakeLists.txt" EXCLUDE
10 PATTERN ".svn" EXCLUDE
11 ${LIBCXX_SUPPORT_HEADER_PATTERN}
12 )
13
14 if (${LIBCXX_ENABLE_SHARED} MATCHES "ON")
15 install(DIRECTORY "${CMAKE_BINARY_DIR}/include/c++/v1/"
16 DESTINATION include/c++/v1/
17 )
18 endif()
然後,在build
子目錄,我發出一個
CC=clang CXX=clang++ cmake -j2 -G "Unix Makefiles" -DLIBCXX_CXX_ABI=libcxxabi -DLIBCXX_LIBCXXABI_INCLUDE_PATHS="../libcxxabi/include" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr ../libcxx -DLIBCXX_ENABLE_SHARED=OFF
所創建的deb
仍然包含所有標題。如果我註釋了14到18行,那麼這個包裏沒有頭文件。我對此感到困惑。爲父母CMakeLists.txt
定義的變量應由小孩CMakeLists.txt
挑選。我錯過了什麼?我會感激一兩個提示。
如果你有你的答案,然後接受它。 – Peter
嗨,彼得,接受我自己的回答,有兩天的等待期。我會。再次感謝。 – user183394