美文网首页
CMake教程——vcpkg自建port案例

CMake教程——vcpkg自建port案例

作者: 生活简单些 | 来源:发表于2020-03-14 14:58 被阅读0次

  vcpkg官方虽然有比较详细的教程指导你创建私有port,但依然会遇到很多摸不着头脑的问题,毕竟vcpkg很新,传统的c++开发者习惯了路径依赖的方式关联各种第三方库,所以即便你认识了一个十多年的C/C++开发经验的朋友也未必能提供给你帮助,最终还是要靠自己摸索,这里我做个存档记录摸索的结果,下面是一个用github项目制作的案例。

include(vcpkg_common_functions)
set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/${PORT})

vcpkg_from_github(
  OUT_SOURCE_PATH SOURCE_PATH
  # 指定项目来源(github账户名/项目名)
  REPO account_name/project_name
  # 发布的release版本号,其实就是tag名
  REF v1.3
  # 其实就是MD5,可以自己找工具算下,当然这边瞎写个字符串,当运行"./vcpkg install xxx"会提示你正确的SHA512,随后把正确的替换下即可
  SHA512 d264e8e4feae25835bcd97097bab23e7df23d21004e57d881dd2076ecd1ffefdada97191331eb5d00dadadebfa1572deb473404cf6003b1f74db3464b3bbcd4a
  # 指定代码分支名
  HEAD_REF master)

# 如果项目没有托管在github等平台,甚至直接就是一个zip下载链接,替换为下面等方式即可
#vcpkg_download_distfile(ARCHIVE
#    URLS "http://localhost:8080/project_name_v1.0.zip"
#    FILENAME "project_name_v1.0.zip"
#    SHA512 c9a216851989c20a29de35226ac2cd312736ecb2b2d795b556bc440dc58e578535bfe8ba2a73695bb10d958d1c0bccabc4d2b50b948877341e97ef0102a80ee9
#)
# 需要手动解压缩
#vcpkg_extract_source_archive(${ARCHIVE})

# cmake配置项目并尝试启用ninja编译选项
vcpkg_configure_cmake(
     SOURCE_PATH ${SOURCE_PATH} 
     PREFER_NINJA)

# Build and install a cmake project(照本宣科)
vcpkg_install_cmake()

# 拷贝pdb文件,pdb文件是便于开发期间程序调试
vcpkg_copy_pdbs()

# 这步很重要,它会将项目原本的cmake target重新定位到 
# ${VCPKG_ROOT}/installed/x64-linux/share下,TARGET_PATH也可不设置,因为默认值就是`/share/${PORT}`:
vcpkg_fixup_cmake_targets(
     CONFIG_PATH lib/cmake/${PORT} 
     TARGET_PATH /share/${PORT})

# vcpkg要求我们将程序编译产生的bug目录和文件都删除,否则会报错提示删除
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug)

# vcpkg要求我们将library的license相关文件拷贝到share里项目名目录下,否则报缺少license错误
file(
  INSTALL ${SOURCE_PATH}/COPYING
  DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}
  RENAME copyright)

给vcpkg制作基于CONFIG的port其实步骤是很简单的,也很容易理解,即便代码是github、bitbucket、gitlab甚至http下载地址,但是想充分利用vcpkg做自定义库托管,最麻烦的不在这篇文章,制作vcpkg的port需要cmake项目提供完整的install功能,坑很多,网上的资料非常稀缺,而且错误的引导也多,因此我的这篇文章介绍了如何编写cmake的install过程。

相关文章

网友评论

      本文标题:CMake教程——vcpkg自建port案例

      本文链接:https://www.haomeiwen.com/subject/nsnbshtx.html