【问题标题】:CMake doesn't generate vc pdb for simple test programCMake 不会为简单的测试程序生成 vc pdb
【发布时间】:2019-06-06 07:07:26
【问题描述】:

我正在尝试在 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 generator 并在尝试生成项目时出现此错误:

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。

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    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 文件。

    【讨论】:

    • 我认为它应该构建简单的测试程序而无需任何 pdb 安装。
    • @NuPagadi, MSBuild ALL_BUILD.vcxproj /p:Configuration=Dedug - 对于这种情况就足够了
    • cmake -G "Visual Studio 10 2010 Win64" 上失败:cannot open program database
    【解决方案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 上制作工作程序。

    【讨论】:

    • 我想我应该尝试以管理员身份运行 cmake gui。我将有机会在星期一试一试。谢谢。
    • 不幸的是,它没有帮助。我没有防病毒软件。而且应该没有调试器实例,因为我重启了系统。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 2019-09-11
      • 2023-03-31
      • 2023-04-08
      • 2014-12-10
      • 1970-01-01
      • 2021-03-18
      相关资源
      最近更新 更多