CMake не генерирует vc pdb для простой тестовой программы

Я пытаюсь использовать 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, когда я создаю из него проект.

Спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
812
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

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 в вашем установочном каталоге.

Я думаю, что предполагается построить простую тестовую программу без установки pdb.

NuPagadi 11.01.2019 12:22

@NuPagadi, MSBuild ALL_BUILD.vcxproj / p: Configuration = Dedug - на этот случай хватит

chronoxor 11.01.2019 12:38

Не работает на cmake -G "Visual Studio 10 2010 Win64": cannot open program database.

NuPagadi 11.01.2019 13:25

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.

Думаю, мне стоит попробовать запустить cmake gui от имени администратора. У меня будет возможность попробовать в понедельник. Спасибо.

NuPagadi 11.01.2019 20:23

К сожалению, это не помогает. У меня нет антивируса. И не должно быть экземпляров отладчика, потому что я перезагружал систему.

NuPagadi 14.01.2019 08:51
Ответ принят как подходящий

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

Другие вопросы по теме