Хорошо, спасибо за объяснение автоматических переменных, теперь я понимаю, что это шаг вперед.

исал Makefile для компиляции программы openCV на OSX (более общий в системах Unix).

Код имеет заголовок с именемconstants.hpp где определены некоторые константы.

Я хотел бы, чтобы Makefile перекомпилировал программу, когда этот заголовочный файл изменяется, потому что значения констант в нем изменяют поведение программы.

Мой Makefile следующий

CPP = g++
CPPFLAGS = -std=c++11

all: main.o

main.o: main.cpp
    $(CPP) $^ $(CPPFLAGS) -o $@

В поисках я попытался определить послеCPPFLAGS Значение:

DEPS = constants.hpp 

а потом сmain.o От этого зависит добавление зависимости следующим образом:

main.o: main.cpp $(DEPS)
        $(CPP) $^ $(CPPFLAGS) -o $@

но я получаю ошибкуclang: error: cannot specify -o when generating multiple output files.

Я пробовал такжеэтот ответ и пытался использовать еM MM флаги, но я что-то упустил.

Как заставить Makefile перекомпилироваться при изменении заголовочного файла?

РЕДАКТИРОВАТЬ: После комментариев к DevSolar мне пришлось полностью изменить вопрос, и он задал также исходный код. Поскольку я нашел здесь бесполезным копировать весь исходный код, я упростил его с помощью простой программы hello world.

Ниже приводитсяmain.cpp:

#include<iostream>
#include"constants.hpp"

int main()
{

  std::cout<<"Hello world, the value is: " <<  myValue <<"\n";
  return 0;
}

и послеconstants.hpp:

static const int myValue = 10;

Ответы на вопрос(2)

Ваш ответ на вопрос