1

我知道如何根据构建配置是Debug还是Release. 我用:

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

Debug, Release, RelWithDebugInfo, MinSizeReleaseCMake 默认在 VS2010 ( )中创建 4 个构建配置。但是如何定义用于RelWithDebugInfo配置的taget链接库呢?

Bakcground: 我只使用Debug,ReleaseRelWithDebugInfo. 我的调试库有后缀_d,其他的没有后缀。Release所以从和输出文件RelWithDebugInfo是相同的。有时当我构建RelWithDebugInfo然后Release一些输出文件没有被覆盖,因此加载了坏的文件并且程序崩溃了。我想通过在配置中添加一些其他后缀来解决这个问题RelWithDebugInfo

4

1 回答 1

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})
于 2013-09-25T07:42:07.357 回答