Я создаю простое приложение C ++ для Linux с помощью команды make. Я хочу проверить мой код с различным набором информации, определенной в двух разных заголовочных файлах: define.h и define.hh.
"define.h" - единственный, используемый в моей системе сборки, и зависимости определены правильно.
Когда я редактирую "define.h", make перестраивает проект.
Когда я меняю имена «define.h» и «define.hh» с помощью терминала, make не потрудится перестроить.
main.cpp:
#include "define.h"
#include <iostream>
int main()
{
std::cout << MSG << std::endl;
}
define.h:
#define MSG "1"
define.hh:
#define MSG "2"
Makefile:
CPPFLAGS:=-g
LDLIBS:=-lstdc++
main: main.o
main.o: main.cpp define.h
После замены имен «define.h» и «define.hh» с помощью графического интерфейса VSCode make перестраивает проект.
Кажется, что переименование файлов в терминале не обновляет их временную метку, но VSCode обновляет временную метку после операции переименования.
Есть ли способ справиться с этой ситуацией в моем make-файле?
Стоит ли ожидать, что make будет умнее в будущем и справится с этой ситуацией? (например, обналичивание информации о файловых узлах)
Это должно быть частью стандартов ОС? (например, обновить отметку времени после переименования или определить новую отметку времени для переименования)