CMake зависимость от определенного (препроцессора) заголовочного файла - PullRequest
2 голосов
/ 01 июля 2011

У меня есть файл конфигурации, который определяет правильные заголовочные файлы для включения в определенные компоненты.Позже я включаю этот файл через токен препроцессора.К сожалению, сканер зависимостей CMake полностью игнорирует файл заголовка.

По сути это сводится к следующему:

#define HEADER_FILE "somefile.h"
#include HEADER_FILE

CMake не добавляет "somefile.h" в список зависимостей для этого исходного файла!

Как я могу заставить CMake правильно распознать эту зависимость?

(я знаю, что могу сделать блоки #if 0 и включить все файлы, но это также включает слишком много зависимостей длядругие источники или в первую очередь побеждает всю цель - в зависимости от того, как вы это делаете)

Ответы [ 2 ]

8 голосов
/ 01 июля 2011

Вы можете добавить явную зависимость к исходному файлу, установив свойство OBJECT_DEPENDS:

set_property(SOURCE source.cpp APPEND PROPERTY OBJECT_DEPENDS "somefile.h")

Это необходимо сделать для любого исходного файла, который включает ваш файл конфигурации.

0 голосов
/ 01 июля 2011

Могу ли я предложить сделать общий файл заголовка вместо всех исходных файлов?Это также более распространенный, чем ваш подход, который я никогда не видел ни в одном производственном коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...