cpack打包外部库
时间: 2023-07-02 21:12:12 浏览: 48
要使用CPack打包外部库,需要在CMakeLists.txt文件中添加以下内容:
```cmake
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF)
set(CPACK_PACKAGE_VERSION_MAJOR "1")
set(CPACK_PACKAGE_VERSION_MINOR "0")
set(CPACK_PACKAGE_VERSION_PATCH "0")
include(InstallRequiredSystemLibraries)
set(CPACK_GENERATOR "ZIP")
set(CPACK_SOURCE_GENERATOR "ZIP")
set(CPACK_PACKAGE_NAME "mylibrary")
set(CPACK_PACKAGE_FILE_NAME "mylibrary-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "My library")
set(CPACK_PACKAGE_VENDOR "My company")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
set(CPACK_PACKAGE_CONTACT "info@mycompany.com")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "mylibrary")
set(CPACK_SOURCE_IGNORE_FILES "/build/;/dist/;/.git/;.swp$;~$")
set(CPACK_PACKAGE_CHECKSUM "SHA256")
set(CPACK_SOURCE_CHECKSUM "SHA256")
set(CPACK_COMPONENTS_ALL libraries headers)
install(TARGETS mylibrary
EXPORT mylibraryTargets
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
INCLUDES DESTINATION include)
install(EXPORT mylibraryTargets
FILE mylibraryTargets.cmake
NAMESPACE mylibrary::
DESTINATION lib/cmake/mylibrary)
install(DIRECTORY include/
DESTINATION include
FILES_MATCHING PATTERN "*.h")
include(CPack)
```
这个示例将会打包一个名为`mylibrary`的库,其中包含了一个名为`mylibrary`的CMake目标。
在上述示例中,我们指定了库的输出目录,包括头文件和库文件的安装目录,并将库文件和头文件分别打包到`lib`和`include`目录下。同时,我们还指定了一些元数据信息,如库的版本号、作者、描述等,并使用SHA256算法计算了文件的校验和。
最后,我们使用`CPack`命令生成ZIP格式的安装包,该安装包包含了所有的文件和元数据信息。