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

GitHub 加速计划 / vc / vcpkg
22.52 K
6.21 K
下载
vcpkg - 一个用于管理 C 和 C++ 库的工具,支持在 Windows、Linux 和 macOS 上安装和集成各种库。
最近提交(Master分支:1 个月前 )
4f746bc6 8 天前
6e90218d 8 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐