CMAKE автоматическая зависимость файла заголовка - PullRequest
4 голосов
/ 27 октября 2011

Вопрос похож на этот вопрос

Обработка зависимостей заголовочных файлов с помощью cmake

У меня есть пример программы dir, имеющий main.c main.h и CMakeLists.txt

main.h содержимое

#ifndef MAIN_H
#define MAIN_H
int t=3;
int y=2;
#endif

main.c содержимое

#include <main.h>
#include<stdio.h>
int main(){

  printf("%d apple",t);
}

и CMakeLists.txt

PROJECT( test )
AUX_SOURCE_DIRECTORY(. test_SRCS)
include_directories(.)
ADD_EXECUTABLE (main ${test_SRCS})

, но cmake это не такперестройка main.c при модификации заголовочного файла.Я хочу, чтобы он автоматически генерировал зависимость заголовочного файла.Возможно ли использовать cmake?

, если нет другого инструмента, который может это сделать?

Ответы [ 3 ]

3 голосов
/ 28 октября 2011

Как упоминалось в моем комментарии, я опробовал ваш пример, и все работало нормально: если main.h был изменен, то main.c будет перекомпилировано.

Моя установка CMake (версия 2.8.0) сказал мне добавить

cmake_minimum_required(VERSION 2.8)

в файл CMakeLists.txt, но это все необходимые мне корректировки.

0 голосов
/ 30 декабря 2012

Отвечая на этот вопрос для других, которые ищут в Google ...

Я столкнулся с этой проблемой в одном из моих проектов.Как оказалось, я добавил заголовок в файл cpp после запуска cmake.Повторный запуск cmake устранил проблему.Если вы столкнулись с этим, попробуйте это и посмотрите, решит ли это проблему.

0 голосов
/ 28 октября 2011

Из документации по cmake 2.8.0 AUX_SOURCE_DIRECTORY:

Заманчиво использовать эту команду, чтобы не писать список источников файлы для библиотеки или исполняемой цели. Хотя это, кажется, работает, CMake не может сгенерировать систему сборки, которая знает, когда добавлен новый исходный файл. Обычно сгенерированная система сборки знает, когда нужно перезапустить CMake, потому что файл CMakeLists.txt изменен, чтобы добавить новый источник. Когда источник только что добавлен в каталог без изменения этого файла, придется вручную Перезапустите CMake, чтобы сгенерировать систему сборки, включающую новый файл.

Почему вы хотите избежать создания списка файлов? Такие списки обычно не часто меняются.

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