[√]尝试使用cmake编译使用vld

简介: [√]尝试使用cmake编译使用vld

vld 引发异常

image.png

注意dbghelp.dll不应该使用系统的:C:\Windows\SYSTEM32\dbghelp.dll

set(dbghelp "dbghelp")
set(dbghelp_dll ${CMAKE_CURRENT_LIST_DIR}/../setup/dbghelp/x86/dbghelp.dll)
add_library(${dbghelp} SHARED IMPORTED GLOBAL)
set_target_properties(${dbghelp} PROPERTIES
    IMPORTED_IMPLIB ${CMAKE_CURRENT_LIST_DIR}/../lib/dbghelp/lib/Win32/DbgHelp.Lib
    IMPORTED_LOCATION ${dbghelp_dll}
)
add_custom_command(TARGET ${vld} POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy ${dbghelp_dll} $(outdir)
)

但是我正确设置了dbghelp.dll之后仍旧报错,后来感觉是vld.dll的问题,看了下代码,的确对vld.dll的名字有严格的限制:

#pragma comment(lib, "vld.lib")
#ifndef WIN64
#define VLDDLL        "vld_x86.dll"
#else
#define VLDDLL        "vld_x64.dll"
#endif

追加后缀后,就不再报错了,也能正常使用

set_target_properties(${vld} PROPERTIES
    SUFFIX "_x86.dll"
)

vs版本

vld对vs的版本有要求,不能高于2015,cmake可以为target设置具体的platform toolset

bash

set_target_properties(${vld} PROPERTIES
    VS_PLATFORM_TOOLSET "v140"
)

下面是一些常见的 VS_PLATFORM_TOOLSET 值:

  • v110: Visual Studio 2012
  • v120: Visual Studio 2013
  • v140: Visual Studio 2015
  • v141: Visual Studio 2017
  • v142: Visual Studio 2019

DbgHelp大量的错误

image.png

我将代码进行了内聚,重新使用cmake编译,发现竟然报错,最后发现不显示的引用dbghelp竟然也能正常运行

target_link_libraries(${vld} PUBLIC ${cppformat} psapi
    # ${dbghelp}
)

移植经验

集成到cocos2dx中,因为一些全局的cmake命令,导致vld的target也受到了污染里面会添加非常多不必要的目录和预处理器,可能这些污染源就会导致编译无法通过,最主要的

add_definitions
include_directories

统一使用target相关的命令替换,并对项目的target进行了额外的适配,保证了项目可以正常运行起来。

目录
相关文章
|
8月前
|
C++
Cmake生成指定vs版本的工程文件
本文简单总结了使用 cmake 生成 visual studio 工程文件的过程
|
6月前
|
编译器
[√]cmake 编译选项
[√]cmake 编译选项
34 0
|
6月前
|
编译器 API C++
[√]vld编译Release遇到的各种问题
[√]vld编译Release遇到的各种问题
40 0
|
6月前
|
XML C++ 数据格式
[√]vld的安装和使用
[√]vld的安装和使用
49 0
|
6月前
|
编译器 Android开发 iOS开发
[√]关于cmake的kits
[√]关于cmake的kits
55 0
|
8月前
|
开发工具 git
编译Gstreamer遇到的问题 autopoint: not found
编译Gstreamer遇到的问题 autopoint: not found
73 0
|
11月前
|
机器人 Linux 编译器
替代notepad++,notepad--介绍及插件cmake编译
替代notepad++,notepad--介绍及插件cmake编译
|
编译器 C语言 C++
用msys2与msvc编译FFmpeg
本文讲解如何使用 msys2 + msvc 来编译 FFmpeg ,msys2 的安装请看 《MSYS2介绍》。
189 0
msys2编译ffmpeg:ERROR: libx264 not found
msys2编译ffmpeg:ERROR: libx264 not found
97 0
|
Linux Shell 编译器
用msys2与mingw编译FFmpeg
用msys2与mingw编译FFmpeg
270 0