CMake не генерирует vc pdb для простой тестовой программы - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь использовать CMake в Windows 10. Я создаю проект Hello world:

CMakeLists.txt

cmake_minimum_required(VERSION 3.13)

add_executable(simple-program main.cpp)

main.cpp

#include <iostream>

int main()
{
        std::cout << "Hello, World!\n";
}

Затем я открываю проект с помощью CMake gui, выбираю генератор Visual Studio 10 2010 Win64 и получаю эту ошибку при попытке сгенерировать проект:

testCCompiler.c : fatal error C1033: cannot open program database 'c:\work\prj\simple-program\build\cmakefiles\cmaketmp\cmtc_983e7.dir\debug\vc100.pdb'

Полный вывод .

Как я понял проблема, из-за опции Zi и отсутствия Fd, которые cmake устанавливает для примера проекта, проект пытается найти базу данных vc100.pdb, и нет никого, потому что генератор не сделал сделай это.

Я пробовал генератор x86. Другие версии cmake (3.6, 3.13, 3.12). И я получаю тот же результат при использовании консоли. Мой VS 2010 должен быть в порядке - он генерирует PDB, когда я создаю проект из него.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 11 января 2019

https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/fatal-error-c1033?view=vs-2017

Фатальная ошибка C1033

Эта ошибка может быть вызвана ошибкой диска, временной блокировкой, созданной антивирусной программой, предыдущим экземпляром отладчика, который не был полностью закрыт, или процессами параллельной сборки mspdbsrv.exe, которые пытаются получить доступ к тому же файлу, среди других возможных причин.

Примечание: Я не смог найти коды ошибок для VS2010 на веб-сайте Microsoft. Я не думаю, что VS2010 больше поддерживается и может не создавать рабочие программы на Windows 10.

0 голосов
/ 15 января 2019

Проблема была в том, что я создал папку сборки в консоли WSL . Так что это может быть вызвано любыми эмуляторами вроде Cygwin и т. Д. Надеюсь, это кому-нибудь поможет.

0 голосов
/ 11 января 2019

Просто соберите сгенерированный проект в режиме отладки:

MSBuild ALL_BUILD.vcxproj /p:Configuration=Debug

Если вы хотите создать Релиз и установить его с файлами PDB, просто все:

list(APPEND INSTALL_TARGETS simple-program)
list(APPEND INSTALL_TARGETS_PDB simple-program)

# Install
install(TARGETS ${INSTALL_TARGETS}
  RUNTIME DESTINATION "${PROJECT_SOURCE_DIR}/bin"
  LIBRARY DESTINATION "${PROJECT_SOURCE_DIR}/bin"
  ARCHIVE DESTINATION "${PROJECT_SOURCE_DIR}/bin")

# Install *.pdb files
if(MSVC)
  foreach(INSTALL_TARGET_PDB ${INSTALL_TARGETS_PDB})
    install(FILES $<TARGET_PDB_FILE:${INSTALL_TARGET_PDB}> DESTINATION "${PROJECT_SOURCE_DIR}/bin")
  endforeach()
endif()

Окончательно запустите CMake и соберите в режиме RelWithDebInfo:

cmake -G "Visual Studio 10 2010 Win64"
MSBuild ALL_BUILD.vcxproj /p:Configuration=RelWithDebInfo
MSBuild INSTALL.vcxproj /p:Configuration=RelWithDebInfo

Это создаст файлы simple-program.exe и simple-program.pdb в каталоге установки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...