visual-studio - 在cmake中指定pdb符号文件的路径

标签 visual-studio visual-c++ cmake pdb-files

我想根据这个改pdb符号文件路径doc 并设置 /PDBALTPATH:%_PDB%。但是,如果我写

set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG
    /OPT:REF /OPT:ICF /PDBALTPATH:%_PDB%")

并检查项目属性中的结果,它显示为 /PDBALTPATH:%%_PDB%%。 保留百分比会在 /PDBALTPATH:_PDB 中退出。

如何实现 /PDBALTPATH:%_PDB%

到目前为止我尝试过的模式(所有模式都将 % 变成 %% ):

  1. /PDBALTPATH:%_PDB%
  2. /PDBALTPATH:_PDB
  3. /PDBALTPATH:%25_PDB%25
  4. /PDBALTPATH:%%_PDB%%

最佳答案

自 CMake 3.1 以来,有一个 TARGET_PDB_FILE_NAME 生成器表达式 ( doc )。它只计算文件名,没有路径。

因此,您可以通过在生成时将其替换为 pdb 文件的实际名称来实现 %_PDB% 的效果。不过,您需要为每个感兴趣的目标指定链接器标志。

命令是这样的

# Suppose
add_library(foo ${foo_sources}) # or add_executable

# Then
target_link_options(foo PRIVATE /DEBUG /OPT:REF /OPT:ICF /PDBALTPATH:$<TARGET_PDB_FILE_NAME:foo>)

关于visual-studio - 在cmake中指定pdb符号文件的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30662342/

相关文章:

visual-studio - Visual Studio 2015 - 无法打开 MVC4 项目

c++ 每 10 分钟运行一次

c++ - 设置 OpenCV 和 .lib 文件

c# - 为默认构造函数添加断点

c# - Visual Studio C# e.Location 错误

c++ - 错误 22error LNK2005 : _realloc already defined in libcmt. lib(realloc.obj) MSVCRT.lib

c++ - 如何将paraview源码编译成Qt工程(.pro)?

c++ - 将空源文件添加到 STATIC 库的原因?

visual-studio - 有没有办法让 Resharper 修复文件上的所有内容(使用第一个选项)

c++ - 为什么调用 boost::split() 会给出这么多警告?