如何在RelWithDebugInfo构建配置中设置哪些库链接?

时间:2013-09-19 13:03:14

标签: visual-studio-2010 cmake

我知道如何根据构建配置是Debug还是Release来链接不同的库。我用:

    foreach(dep ${DEPENDENCIES})
        target_link_libraries (${PROJECT_NAME}
            debug ${dep}_d
            optimized ${dep}
        )
    endforeach(dep)

默认情况下,CMake在VS2010(Debug, Release, RelWithDebugInfo, MinSizeRelease)中创建4个构建配置。但是如何为RelWithDebugInfo配置定义taget链接库?

Bakcground: 的 我只使用DebugReleaseRelWithDebugInfo。我的调试库有后缀_d,其他没有后缀。因此ReleaseRelWithDebugInfo的输出文件是相同的。有时当我构建RelWithDebugInfo然后Release时,某些输出文件不会被覆盖,因此会加载坏文件并导致程序崩溃。我想通过向RelWithDebugInfo配置添加一些其他后缀来解决此问题。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。通过target_link_librearies是不可能的,但可以通过设置链接器标志来完成:

    set(DEBUG_DEP)
    set(RWD_DEP)
    set(RELEASE_DEP)

    foreach(dep ${DEPENDENCIES})
            set(RWD_DEP ${RWD_DEP} ${dep}_rwd)
            set(DEBUG_DEP ${DEBUG_DEP} ${dep}_d)
            set(RELEASE_DEP ${RELEASE_DEP} ${dep})
    endforeach(dep)

    set(CMAKE_SHARED_LINKER_FLAGS_DEBUG ${CMAKE_SHARED_LINKER_FLAGS_DEBUG} " /LIBPATH:" ${DEBUG_DEP})
    set(CMAKE_SHARED_LINKER_FLAGS_RELEASE ${CMAKE_SHARED_LINKER_FLAGS_RELEASE} " /LIBPATH:" ${RELEASE_DEP})
    set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}" /LIBPATH:" ${RWD_DEP})