如何使用 Cmake 为 MSVC 生成预编译头文件

时间:2021-05-10 15:50:39

标签: c++ visual-studio cmake

我正在尝试使用 target_precompiled_headers() 为我的项目生成预编译头。我已经阅读了解释该功能的 this 答案,但我无法使其正常工作。标头不会添加到 .cpp 文件中,而是生成四个 .hxx 文件。

我的代码:

  • #CMakeLists.txt
# Collect files
set(ENGINE_WINDOW
    # window
    "src/window/window.h"
    "src/window/window.cpp"
)

# Set filters
source_group("window"   FILES ${ENGINE_WINDOW})

# Build static library
add_library(engine STATIC
    ${ENGINE_WINDOW}
)

# Precompile headers
target_precompile_headers(engine PRIVATE 
    <iostream>
)

# Specify include directories
target_include_directories(engine
    PUBLIC ${PROJECT_SOURCE_DIR}/vendor/glad/include
)

# Find OpenGL
find_package(OpenGL)

# Link libraries to engine
target_link_libraries(engine
    ${OPENGL_gl_LIBRARY}
    glad
    glfw
)
  • 生成的 cmake_pch.hxx (x4)
/* generated by CMake */

#pragma system_header
#ifdef __cplusplus
#include <iostream>
#endif // __cplusplus

  • 生成 cmake_pch.cpp(为空)
/* generated by CMake */

Output of CMake generated precompiled headers

编辑 这是一个最小的可重现案例: https://www.dropbox.com/s/jn1yknfv2ybxp4g/case.zip?dl=0

0 个答案:

没有答案