【问题标题】:Using Precompiled Header for the part of source files (CMake)对部分源文件使用预编译头文件(CMake)
【发布时间】:2021-12-30 10:13:15
【问题描述】:
file(GLOB SRC *.cpp)
file(GLOB SRC2 ../xx/*.cpp)
target_precompile_headers(myapp PRIVATE "$<ONLY_FOR_SRC>:stdafx.h>")
我在上面的ONLY_FOR_SRC 上尝试了几个CMake Generative Expressions,但是,它们不起作用。我的意思是让SRC 中的文件使用precompiled header 编译,而SRC2 中的文件在没有预编译头的情况下编译。
ONLY_FOR_SRC 上面的位置应该放什么?
【问题讨论】:
标签:
cmake
precompiled-headers
【解决方案1】:
其中一种正确的方法是使用对象库来分离编译要求:
file(GLOB SRC *.cpp)
file(GLOB SRC2 ../xx/*.cpp)
add_library(myapp-src OBJECT "${SRC}")
add_library(myapp-src2 OBJECT "${SRC2}")
target_precompile_headers(myapp-src PRIVATE stdafx.h)
target_link_libraries(myapp PRIVATE myapp-src myapp-src2)
您可以设置不同的包含目录、链接库,然后将所有目标文件链接在一起。