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

时间:2019-01-11 11:00:16

标签: c++ windows visual-studio visual-studio-2010 cmake

我试图在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。

谢谢!

3 个答案:

答案 0 :(得分:2)

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上制作正常的程序。

答案 1 :(得分:2)

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

答案 2 :(得分:-1)

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

MSBuild ALL_BUILD.vcxproj /p:Configuration=Debug

如果您要创建一个Release并将其与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()

Finall运行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文件。