2015-01-15 4 views
0

Когда я устанавливаю свои библиотеки для отладочных сборников, файлы pdb также копируются.CMake copy PDB-файлы для версий выпуска

Я хочу то же самое для релизов, но CMake не делает этого. Поэтому я должен вручную выбрать файлы * .pdb в CMAKE_BINARY_DIR и скопировать их.

В принципе, как я могу это сделать? Или есть ли другой способ решить эту проблему?

ответ

2

Один из способов сделать это - использовать функцию «файл» Cmake.

if(CMAKE_BUILD_TYPE EQUAL "RELEASE") 
    file(GLOB filelist ${PATH_TO_PDB_FILES}/*.pdb) 
    file(COPY ${filelist} DESTINATION ${PATH_TO_PDB_DESTINATION}) 
endif(CMAKE_BUILD_TYPE EQUAL "RELEASE") 

Первый вызов функции «Файл» использует опцию «GLOB» и формирует список (так называемый «список файлов») из PDB-файлы, расположенные в каталоге «PATH_TO_PDB_FILES».

Второй вызов функции «файл» использует параметр «КОПИЯ», и он использует список файлов, сгенерированный первым вызовом функции «файл», и копирует их в каталог «PATH_TO_PDB_DESTINATION».

Я также поставил оператор if, чтобы проверить, если вы делаете сборку выпуска. (Предполагая, что вы хотите сделать это только в сборках релизов.)

EDIT: Если я правильно понял, вы хотите скопировать файлы pdb на этапе установки. Если это так, то это должно сделать это:

INSTALL(DIRECTORY ${PATH_TO_PDB_FILES} 
    DESTINATION ${PATH_TO_PDB_DESTINATION} 
    CONFIGURATIONS Release 
    FILES_MATCHING 
    PATTERN *.pdb 
) 
+0

Файлы pdb не генерируются до тех пор, пока библиотека не будет построена .. Это должно выполняться как задание пост-сборки, как это сделать? – Nick

+0

О 'if (CMAKE_BUILD_TYPE EQUAL" RELEASE ")': http://stackoverflow.com/questions/24460486/cmake-build-type-not-being-used-in-cmakelists-txt –

+0

Пожалуйста, посмотрите мое редактирование, это новое решение должно сделать трюк. – Cyberunner23

Смежные вопросы