Как обработать операцию переименования на зависимостях в makefile? - PullRequest
0 голосов
/ 05 апреля 2019

Я создаю простое приложение 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 будет умнее в будущем и справится с этой ситуацией? (например, обналичивание информации о файловых узлах)

Это должно быть частью стандартов ОС? (например, обновить отметку времени после переименования или определить новую отметку времени для переименования)

1 Ответ

2 голосов
/ 05 апреля 2019

Вы можете запустить touch <filename> после переименования.Это должно обновить временную метку модификации.

EDIT : еще один вариант для достижения желаемого - наличие двух файлов define1.h и define2.h и добавление аргумента к вашей команде make в зависимости отна какой марке решу какой взять.Вы можете запустить make следующим образом: make target DEFINEH=1 или make target DEFINEH=2 И в своем make-файле:

ifeq ($(DEFINEH),1) cp define1.h define.h touch define.h else ifeq ($(DEFINEH),2) cp define2.h define.h touch define.h endif

Таким образом, вы никогда не забудете прикоснуться к файлу.

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