今晚我一直在尝试在 Ubuntu 12.04LTS 64 位机器上为 LLVM libc++ 3.4 创建一个 deb。我想首先创建一个只包含/usr/lib64/libc++.a
没有任何标题的 deb。是的,我知道根据Debian 库打包指南,我应该将文件包含在一个*-dev
包中,但是对于cmake
andcpack
来说,我想逐步实现。
所以,我首先更改libcxx-3.4/lib/CMakeLists.txt
并添加了一个 if 检查(见第 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 行,则包中不包含任何标题。我对此感到困惑。为 parent 定义的变量CMakeLists.txt
应该由 child 拾取CMakeLists.txt
。我错过了什么?我会很感激一两个提示。