美文网首页
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