CMake 不会为简单的测试程序生成 vc pdb

CMake doesn't generate vc pdb for simple test program

我正在尝试在 Windows 10 上使用 CMake。我创建了一个 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'

Full output.

据我了解,由于 Zi 选项而没有 Fd,cmake 为示例项目设置了该项目,该项目正在尝试查找 vc100.pdb 数据库并且有没有人,因为发电机没有成功。

我试过 x86 生成器。其他 cmake 版本(3.6、3.13、3.12)。使用控制台时我得到了相同的结果。我的 VS 2010 应该没问题 - 当我从它创建项目时它会生成 PDB。

谢谢!

只需在调试模式下构建您生成的项目:

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.exesimple-program.pdb 文件。

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

致命错误 C1033

此错误可能是由于磁盘错误、防病毒程序创建的临时锁定、尚未完全关闭的先前调试器实例或试图访问的并行构建 mspdbsrv.exe 进程引起的同一个文件,以及其他可能的原因。

注意: 我在 Microsoft 网站上找不到 VS2010 的错误代码。我认为 VS2010 不再受支持,可能无法在 Windows 10 上制作工作程序。

问题是因为我在 WSL 控制台中创建了构建文件夹。所以它可能是由任何种类的模拟器引起的,例如Cygwin等。希望它能对某人有所帮助。