Как получить CMake для установки файлов PDB для целей

Как получить CMake для установки сопутствующих файлов PDB, необходимых для отладки DLL файлов Visual Studio и EXE файлов?

Ответ 1

Я боролся некоторое время, пытаясь получить хороший ответ на этот вопрос. Теперь я думаю, что нашел один: используйте команду install file с выражением генератора $<TARGET_PDB_FILE:tgt> (доступно в CMake 3.1.3 и новее). В частности, команда установки ниже, кажется, работает. Команда скопирует целевой файл pdb $ {PROJECT_NAME} в целевой каталог bin установки.

install(FILES $<TARGET_PDB_FILE:${PROJECT_NAME}> DESTINATION bin OPTIONAL)

Команда установит файл pdb для каждой конфигурации, которая генерирует файл pdb. При использовании OPTIONAL команда install не выдаст ошибку, если исходный файл pdb не существует. Эта команда предназначена для использования в целях, созданных с помощью add_library(${PROJECT_NAME}...) или add_executable(${PROJECT_NAME}...).

Это лучший ответ, который я нашел. Пожалуйста, дайте мне знать, если есть лучший. Я нашел трудную для понимания документацию по TARGET_PDB_FILE генератора TARGET_PDB_FILE в разделе "Информационные выражения" документации по выражениям cmake-generator-expression.

Ответ 2

Кроме того, если вам не нужен отдельный файл PDB, вы можете использовать функцию " Generate Debug Information optimized for sharing and publishing (/DEBUG:FULL) для счастливой отладки. Для этого вам нужно установить LINK_FLAGS для целевого ${PROJECT_NAME}:

set_target_properties(${PROJECT_NAME} PROPERTIES
    LINK_FLAGS_DEBUG "-DEBUG:FULL"
)

Или, если по какой-то причине вы не можете редактировать CMakeLists.txt вы можете установить параметр cmake: