CMake+Visual Studio环境下启用预编译头后添加新源文件触发C1010编译错误的求助
CMake+Visual Studio环境下启用预编译头后添加新源文件触发C1010编译错误的求助
各位大佬好,我最近在CMake结合Visual Studio的项目里踩了个预编译头的坑,实在搞不定了来求助!
情况是这样的:我用target_precompile_headers(${APPLICATION_NAME} PRIVATE include/precompiled/pch.h)给项目启用了预编译头,刚生成项目的时候编译完全正常,但只要我往项目里加新的.cpp源文件,再编译就会立刻弹出C1010错误:
error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "path/to/cmake_pch.hxx"' to your source?
现在我唯一的临时解决办法就是每次加完新文件,就彻底删掉CMake生成的缓存和项目文件,重新跑一遍CMake生成流程——这效率太低了,肯定哪里有问题对吧?
我用的环境是Visual Studio 17.14.7,CMake最低版本要求3.20,项目C标准设的是C20。
下面是我的CMakeLists.txt关键代码段:
cmake_minimum_required(VERSION 3.20) project(artisDX) set(CMAKE_CXX_STANDARD 20) message(STATUS "Configuring sources...") set_property(GLOBAL PROPERTY USE_FOLDERS ON) set(APPLICATION_NAME "artisDX") file(GLOB_RECURSE ARTISDX_SOURCES "src/*.cpp") file(GLOB_RECURSE ARTISDX_HEADERS "include/*.h") add_executable(${APPLICATION_NAME} ${ARTISDX_SOURCES} ${ARTISDX_HEADERS}) target_precompile_headers(${APPLICATION_NAME} PRIVATE include/precompiled/pch.h)
我自己瞎猜是不是file(GLOB_RECURSE的锅?因为新文件加进来之后CMake没自动检测到,导致预编译头的配置没同步到新文件?但为什么重新生成项目就管用呢?有没有不用每次全量重新生成的解决办法呀?
内容来源于stack exchange
相关产品推荐
相关产品推荐

