You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CMake target_precompile_headers构建失败且无错误描述(疑似GCC问题)

MinGW-w64 GCC预编译头编译失败问题

问题概述

此问题根源是GCC的问题。

编译时出现如下错误:

mingw32-make[2]: *** [CMakeFiles\MyProject.dir\build.make:94: CMakeFiles/MyProject.dir/main.cpp.obj] Error 1

build.make第94行对应的编译命令为:

C:\PROGRA~1\mingw64\bin\G__~1.EXE $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -Winvalid-pch -include MyProjectDirectory/build/CMakeFiles/MyProject.dir/cmake_pch.hxx -MD -MT CMakeFiles/MyProject.dir/main.cpp.obj -MF CMakeFiles\MyProject.dir\main.cpp.obj.d -o CMakeFiles\MyProject.dir\main.cpp.obj -c MyProjectDirectory\main.cpp

触发条件

仅当预编译头中包含特定头文件组合时才会触发错误,已验证两种组合:

  • 单独包含Vulkan SDK的vulkan.hpp
  • 同时包含SDL的SDL.h、Vulkan Bootstrapping库的VkBootstrap.h和标准库的<filesystem>

使用MinGW-w64环境下的GCC,移除上述组合中任意一个头文件,错误即可消失。

已制作仅含预编译头和空main函数的极简项目,但仍未明确问题根源,希望无需手动排查头文件内容。

极简复现示例

所有文件位于同一目录,目录下需包含Vulkan头文件所在的include/vulkan子文件夹。

CMakeLists.txt

cmake_minimum_required(VERSION 3.0.0)
project(MyProject VERSION 0.1.0)

add_executable(${PROJECT_NAME} main.cpp)

target_include_directories(${PROJECT_NAME}
    PUBLIC .
)

target_precompile_headers(${PROJECT_NAME}
    PRIVATE pch.hpp
)

main.cpp

int main()
{
    return 0;
}

pch.hpp

#pragma once

#include "vulkan/vulkan.hpp"

内容的提问来源于stack exchange,提问作者VV65536

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 05:52:06