Как добавить зависимость в CMake к глобальному заголовку, включенному через флаги компилятора? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть установка, в которой на этапе генерации CMake настраивает файл заголовка с определениями, необходимыми для моего проекта C. Затем, вместо добавления настроенного файла в качестве включения в каждый исходный файл, я добавил его в команду компиляции, установив "-include global_config.h" в переменную CMAKE_C_FLAGS. По какой-то причине зависимости, сгенерированные компилятором, не включают зависимости, добавленные в командной строке.

Это работает нормально для чистых сборок, но как только я изменяю переменную кеша CMake и перестраиваю, происходит следующее: Сам CMake перезапускается, конфигурация генерируется заново, но, поскольку изменился только файл конфигурации, и это не считается зависимостью для исходных файлов, они не перекомпилируются. Мне нужен способ явно указать, что сгенерированный файл является «частью» команды компиляции.

Пример минимальной воспроизводимости:

  • CMakeLists.txt
cmake_minimum_required(VERSION 3.9.1)
project(Cfg_test)

set(USER_NAME spidey CACHE STRING "User name to be greeted")

configure_file(global_cfg.h.in global_cfg.h)
set(CMAKE_C_FLAGS "-include global_cfg.h")

add_executable(greeter main.c)
  • настраиваемый заголовок, global_cfg.h.in:
#define USER_NAME "@USER_NAME@"
  • main. c
#include <stdio.h>

int main(void)
{
    printf("Hello, %s.\n", USER_NAME);
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...