jsoncpp编译_循序渐进,为VCPKG整合VC-LTL编译选项,三步搞定!
致谢
感谢大胸滴辛苦摸索,让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
它大概意思就是
- x86平台。
- 运行库采用静态链接(即 /MT /MTd)。
- 编译为静态库(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
OK,大功告成!
同理可得,如果需要编译x64静态库,我们只需要把“triplets/x64-windows-static.cmake”复制一份为“triplets/x64-windows-static-ltl.cmake”。
然后输入 .vcpkg.exe install jsoncpp:x64-windows-static-ltl
最后,谢谢观赏
——mingkuang
更多推荐
所有评论(0)