关闭 cmake 编译所显示包含的头文件信息
问题使用 cmake 编译工程时显示项目所包含的头文件。其列出的头文件所包含的内容经过递归检索。如下12:40:29:454 ------ 重新生成 已启动: 项目: CMakeLists配置: Debug ------ 12:40:30:087 [1/2] Cleaning additional files... 12:40:30:310 [2/2] Cleaning all built files... 12:40:30:310 Cleaning... 3 files. 12:40:30:555 [1/4] Automatic MOC and UIC for target current 12:40:30:673 [2/4] Building CXX object srcs\cpp\chapter999\current\CMakeFiles\current.dir\current_autogen\mocs_compilation.cpp.obj 12:40:30:718 [3/4] Building CXX object srcs\cpp\chapter999\current\CMakeFiles\current.dir\srcs\main.cpp.obj 12:40:30:718 注意: 包含文件: D:\userCodes\qt\ffmpegPractice\srcs\cpp\chapter999\current\srcs\main.h 12:40:30:718 注意: 包含文件: D:\userCodes\qt\ffmpegPractice\srcs\lib\ffmpeg_8.1.1_full_build_shared\include\libavutil/avutil.h 12:40:30:718 注意: 包含文件: D:\userCodes\qt\ffmpegPractice\srcs\lib\ffmpeg_8.1.1_full_build_shared\include\libavutil\common.h 12:40:30:718 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\errno.h 12:40:30:718 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\corecrt.h 12:40:30:719 注意: 包含文件: C:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.51.36231\include\vcruntime.h 12:40:30:719 注意: 包含文件: C:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.51.36231\include\sal.h 12:40:30:719 注意: 包含文件: C:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.51.36231\include\concurrencysal.h 12:40:30:719 注意: 包含文件: C:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.51.36231\include\vadefs.h 12:40:30:719 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\inttypes.h 12:40:30:719 注意: 包含文件: C:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.51.36231\include\stdint.h 12:40:30:719 注意: 包含文件: C:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.51.36231\include\limits.h 12:40:30:719 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\math.h 12:40:30:719 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\corecrt_math.h 12:40:30:719 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\stdio.h 12:40:30:719 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\corecrt_wstdio.h 12:40:30:803 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\corecrt_stdio_config.h 12:40:30:874 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\stdlib.h 12:40:30:874 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\corecrt_malloc.h 12:40:30:874 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\corecrt_search.h 12:40:30:874 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\stddef.h 12:40:30:875 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\corecrt_wstdlib.h 12:40:30:875 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\string.h 12:40:30:875 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\corecrt_memory.h 12:40:30:875 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\corecrt_memcpy_s.h 12:40:30:875 注意: 包含文件: C:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.51.36231\include\vcruntime_string.h 12:40:30:875 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\corecrt_wstring.h 12:40:30:875 注意: 包含文件: D:\userCodes\qt\ffmpegPractice\srcs\lib\ffmpeg_8.1.1_full_build_shared\include\libavutil\attributes.h 12:40:30:875 注意: 包含文件: D:\userCodes\qt\ffmpegPractice\srcs\lib\ffmpeg_8.1.1_full_build_shared\include\libavutil\error.h 12:40:30:875 注意: 包含文件: D:\userCodes\qt\ffmpegPractice\srcs\lib\ffmpeg_8.1.1_full_build_shared\include\libavutil\macros.h 12:40:30:876 注意: 包含文件: D:\userCodes\qt\ffmpegPractice\srcs\lib\ffmpeg_8.1.1_full_build_shared\include\libavutil/avconfig.h 12:40:30:876 注意: 包含文件: D:\userCodes\qt\ffmpegPractice\srcs\lib\ffmpeg_8.1.1_full_build_shared\include\libavutil\version.h 12:40:30:876 注意: 包含文件: D:\userCodes\qt\ffmpegPractice\srcs\lib\ffmpeg_8.1.1_full_build_shared\include\libavutil\mem.h 12:40:30:876 注意: 包含文件: D:\userCodes\qt\ffmpegPractice\srcs\lib\ffmpeg_8.1.1_full_build_shared\include\libavutil\rational.h 12:40:30:876 注意: 包含文件: D:\userCodes\qt\ffmpegPractice\srcs\lib\ffmpeg_8.1.1_full_build_shared\include\libavutil\mathematics.h 12:40:30:876 注意: 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\math.h 12:40:30:876 注意: 包含文件: D:\userCodes\qt\ffmpegPractice\srcs\lib\ffmpeg_8.1.1_full_build_shared\include\libavutil\intfloat.h 12:40:30:876 注意: 包含文件: D:\userCodes\qt\ffmpegPractice\srcs\lib\ffmpeg_8.1.1_full_build_shared\include\libavutil\log.h 12:40:30:876 注意: 包含文件: C:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.51.36231\include\stdarg.h 12:40:30:877 注意: 包含文件: D:\userCodes\qt\ffmpegPractice\srcs\lib\ffmpeg_8.1.1_full_build_shared\include\libavutil\pixfmt.h 12:40:31:052 [4/4] Linking CXX executable D:\userCodes\qt\ffmpegPractice\builder\Debug\x86_64_MSVC_bin\current\current.exe原因使用了 showIncludes 选项。选项链接https://learn.microsoft.com/zh-cn/cpp/build/reference/showincludes-list-include-files?viewmsvc-170使用该选项会列出所有头文件信息。解决方案cmake 添加函数# # 取消显示包含头文件内容 function( un_show_include_info target_name ) # 关闭 /showIncludes if( MSVC ) message( STATUS 使用 MSVC 编译环境 ) # 检查是否存在编译选项 if( CMAKE_DEPFILE_FLAGS_CXX ) # 移除 /showIncludes 编译选项 list( REMOVE_ITEM CMAKE_DEPFILE_FLAGS_CXX /showIncludes ) string( REPLACE /showIncludes CMAKE_DEPFILE_FLAGS_CXX ${CMAKE_DEPFILE_FLAGS_CXX} ) set( CMAKE_DEPFILE_FLAGS_CXX ${CMAKE_DEPFILE_FLAGS_CXX} PARENT_SCOPE ) endif( ) # 检查是否存在编译选项 if( CMAKE_DEPFILE_FLAGS_C ) # 移除 /showIncludes 编译选项 list( REMOVE_ITEM CMAKE_DEPFILE_FLAGS_C /showIncludes ) string( REPLACE /showIncludes CMAKE_DEPFILE_FLAGS_C ${CMAKE_DEPFILE_FLAGS_C} ) set( CMAKE_DEPFILE_FLAGS_C ${CMAKE_DEPFILE_FLAGS_C} PARENT_SCOPE ) endif( ) # 获取目标的当前编译选项 get_target_property( TARGET_COMPILE_OPTIONS ${target_name} COMPILE_OPTIONS ) # 检查是否存在编译选项 if( TARGET_COMPILE_OPTIONS ) # 移除 /showIncludes 编译选项 list( REMOVE_ITEM TARGET_COMPILE_OPTIONS /showIncludes ) # 更新目标的编译选项 set_target_properties( ${target_name} PROPERTIES COMPILE_OPTIONS ${TARGET_COMPILE_OPTIONS} ) endif( ) # 检查是否存在编译选项 if( CMAKE_CXX_SCANDEP_SOURCE ) # 移除 /showIncludes 编译选项 list( REMOVE_ITEM CMAKE_CXX_SCANDEP_SOURCE /showIncludes ) list( REMOVE_ITEM CMAKE_CXX_SCANDEP_SOURCE -showIncludes ) string( REPLACE /showIncludes CMAKE_CXX_SCANDEP_SOURCE ${CMAKE_CXX_SCANDEP_SOURCE} ) string( REPLACE -showIncludes CMAKE_CXX_SCANDEP_SOURCE ${CMAKE_CXX_SCANDEP_SOURCE} ) set( CMAKE_CXX_SCANDEP_SOURCE ${CMAKE_CXX_SCANDEP_SOURCE} PARENT_SCOPE ) endif( ) endif( ) endfunction( un_show_include_info )调用add_executable( ${prject_name} ${project_src_file} ) un_show_include_info( ${prject_name} )