我一直在尝试在 RHEL 6.4 机器上构建 3.3 的RPM
软件包。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
到我仍然是新手,我会很感激关于正确使用指令的提示/指针。