使用CMake链接库的调试版本

时间:2013-07-25 17:41:15

标签: c++ dll linker cmake

我在使用lib的调试版本时遇到了一些问题。我使用CMake创建一个库:

project(myLib)
...
add_library(myLib SHARED ${SOURCES})

我启动了两次构建以获得我的lib的发布和调试版本。然后我将'd'后缀添加到调试库的名称中,并myLib.dllmyLibd.dll

在我的应用中,我明确地链接到调试dll:

project(myApp)
add_executable(myApp WIN32 ${SOURCES})
target_link_libraries(myApp myLibd.dll)

构建成功完成,但是当我使用Dependency Walker打开生成的exe文件时,我得到了一个未解析的myLib.dll文件依赖项,即使调试版本(myLibd.dll)位于同一文件夹中

那么,为什么我的应用程序试图在运行时使用我的lib的发行版本?我如何正确链接调试版本?

1 个答案:

答案 0 :(得分:12)

您不应手动重命名该文件。请改用CMake的CMAKE_DEBUG_POSTFIX variableDEBUG_POSTFIX target property

add_library(myLib SHARED ${SOURCES})
set_target_properties(mylib PROPERTIES DEBUG_POSTFIX "d")

[...]
add_executable(myApp WIN32 ${SOURCES})
target_link_libraries(myApp myLib)