我试图在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'
据我所知,由于Zi
选项而没有Fd
(为示例项目设置了cmake),该项目正在尝试查找vc100.pdb
数据库,但是没有一个因为发电机没有做到。
我已经尝试过x86生成器。其他cmake版本(3.6、3.13、3.12)。使用控制台时,我得到相同的结果。我的VS 2010应该没问题-当我从它创建项目时,它会生成PDB。
谢谢!
答案 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.exe
和simple-program.pdb
文件。