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

3
我想根据这个文档更改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%%

这对我来说看起来像是一个没有容易解决方法的错误。 - Fraser
1个回答

1
自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>)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接