CMake对定义的(预处理器)头文件的依赖性

edA*_*a-y 2 c++ cmake

我有一个配置文件设置,定义了包含在某些组件中的正确头文件.后来我通过预处理器令牌包含该文件.不幸的是,CMake的依赖扫描程序完全忽略了头文件.

基本上它归结为:

#define HEADER_FILE "somefile.h"
#include HEADER_FILE
Run Code Online (Sandbox Code Playgroud)

CMake不会添加"somefile.h"到此源文件的依赖项列表中!

如何让CMake正确识别这种依赖?

(我知道我可以执行#if 0块并包含所有文件,但这包括其他来源的太多依赖项,或者首先取决于整个目的 - 取决于你如何做)

sak*_*kra 8

您可以通过设置OBJECT_DEPENDS属性向源文件添加显式依赖项:

set_property(SOURCE source.cpp APPEND PROPERTY OBJECT_DEPENDS "somefile.h")
Run Code Online (Sandbox Code Playgroud)

您必须对包含配置文件的任何源文件执行此操作.