cmake - 从对象库中提取pdb文件

Nic*_*ick 10 cmake visual-c++ pdb-files

我正在使用对象库构建我的静态,如使用CMake 3.1.3所示.

我有

ADD_SUBDIRECTORY(A)
ADD_SUBDIRECTORY(B)
....
ADD_LIBRARY(mylib STATIC ${SOURCES}
                  $<TARGET_OBJECTS:A> 
                  $<TARGET_OBJECTS:B> )
SET_TARGET_PROPERTIES(mylib PROPERTIES COMPILE_PDB_NAME mylib COMPILE_PDB_OUTPUT_DIR ${CMAKE_BINARY_DIR})
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是A在A的CMake子目录中生成vc120.pdb.B在B的CMake子目录中生成自己的vc120.pdb.并且,mylib在主二进制cmake文件夹中生成mylib.pdb.

我只想要一个静态库和一个pdb文件.我只想要mylib和mylib.pdb.

如何将所有vc120.pdbs合并到mylib.pdb中,或者理想情况下只生成一个pdb文件?

Nic*_*ick 1

我已经成功联系了 Kitware(CMake 所有者)的人员。

他们说过,

“将 A、B 和 mylib 的 COMPILE_PDB_* 属性全部设置为指向同一个位置。对象库是独立构建的,不知道什么会消耗它们(或者如果多个目标消耗它们),因此需要单独配置它们”。

所以,在 A 和 B 里面,做

add_library(A OBJECT a.c)
set_target_properties(A PROPERTIES
    COMPILE_PDB_NAME "mylib"
    COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)
Run Code Online (Sandbox Code Playgroud)