jsoncpp编译_循序渐进,为VCPKG整合VC-LTL编译选项,三步搞定!

03a44c08a13fc28cfee239f049731a9b.png

致谢

感谢大胸滴辛苦摸索,让VC-LTL适用于VCPKG。这里也希望能有更多人能踊跃的表达想法、提供改进意见,为VC-LTL添砖加瓦!

工具准备

VCPKG : Microsoft/vcpkg

VC-LTL(4.0.0.30或者更高版本):Chuyu-Team/VC-LTL

打个广告,万能的网友单独拉了一个分支 xspeed1989/vcpkg_vc-ltl,此分支会直接使用VC-LTL编译,懒人必备。

第一步

我们主要想法是在vcpkg中添加一个新的triplets,以支持VC-LTL。这样不影响vcpkg现有功能,提高了灵活性的同时不用做太多更改。

vcpkg有个默认的“triplets/x86-windows-static.cmake”,它的内容如下:

# x86-windows-static.cmake

它大概意思就是

  1. x86平台。
  2. 运行库采用静态链接(即 /MT /MTd)。
  3. 编译为静态库(lib,纯obj组成的那种)。

我们复制一份,取名叫”triplets/x86-windows-static-ltl.cmake“。

第二步

然后,我们再打开"scripts/toolchains/windows.cmake",在文件末尾的“set(CMAKE_EXE_LINKER_FLAGS_RELEASE ...”下方添加以下内容:

    set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS}" CACHE STRING "")


    #####################################################################################
    # 我们添加以下,内容。当VCPKG_TARGET_TRIPLET末尾包含“-ltl”字符串时,加载VC-LTL。
    # VCPKG_TARGET_TRIPLET 就是triplet文件名,即“x86-windows-static-ltl”。
    if(VCPKG_TARGET_TRIPLET)
        if("${VCPKG_TARGET_TRIPLET}" MATCHES "-ltl")
            include("${CMAKE_CURRENT_LIST_DIR}/VC-LTL helper for cmake.cmake")
        endif()
    endif()
    #####################################################################################
endif()

然后把VC-LTL的“VC-LTL helper for cmake.cmake”,复制到vcpkg的"scripts/toolchains/VC-LTL helper for cmake.cmake",也就是跟windows.cmake同一级目录。

第三步

我们以jsoncpp为例,在PowerShell中输入:

.vcpkg.exe install jsoncpp:x86-windows-static-ltl

ff1027dc23020f39da23e75437a93923.png

OK,大功告成!

同理可得,如果需要编译x64静态库,我们只需要把“triplets/x64-windows-static.cmake”复制一份为“triplets/x64-windows-static-ltl.cmake”。

然后输入 .vcpkg.exe install jsoncpp:x64-windows-static-ltl

最后,谢谢观赏

——mingkuang

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值