Нечувствительное к регистру -и сохраняющее регистр -поведение — это старый выбор, сделанный Apple, и мне кажется, что оболочка просто повторяет все, что вы вводите. (Попробуйте LS /BIN/CP
. )Это поведение, наконец, устранено, и, к счастью, с введением APFS , файловой системы Apple, которая должна быть доступна этой осенью с грядущей macOS High Sierra. Он также будет на watchOS, tvOS, iOS. Хотя HFS+ может быть отформатирован с учетом регистра -, не все программы могут различить разницу.
В этой части Makefile:
bin/BridgeSolution : build/main.o build/Person.o build/State.o
$(CXX) $(CXXFLAGS) -o $@ $?
bin/TestPerson : build/Person.o build/PersonTests.o
$(CXX) $(CXXFLAGS) -o $@ $?
bin/TestState : build/State.o build/StateTests.o
$(CXX) $(CXXFLAGS) -o $@ $?
нужно использовать $^
, а не $?
. $?
представляет подмножество пререквизитов, которые новее, чем цель; таким образом, когда вы редактируете PersonTests.cpp
после сборки TestPerson
, выполните перестроение PersonTests.o
, и это единственное необходимое условие TestPerson
, которое новее, чем TestPerson
, поэтому $?
становится TestPerson.o
.
Если написать
$(CXX) $(CXXFLAGS) -o $@ $^
вместо этого рецепт будет постоянно включать все предварительные условия.