我一直在尝试在今晚的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