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

Так что это немного грязно, однако у меня есть один файл .cpp, который я хочу использовать двумя различными способами; как класс c, вызываемый классом java с использованием JNI, и как отдельная программа c. Причина этого в том, что этот код перемещается между машинами, и иногда я хочу просто запустить и скомпилировать код c ++ напрямую, а не запускать Java и запускать его Java. (В коде c ++ есть метод main, который запускается только в автономной версии).

Так что в любом случае у меня есть файл (test.cpp) и исходный код Java, который идет с ним (test.java) в / home / user / dev / javajni /. Тем не менее, я также хочу иметь возможность скомпилировать его как автономный в / home / user / dev / standalone /. В автономном каталоге у меня есть файл make, который компилирует только программу c.

В любом случае, когда я делаю жесткую ссылку на файл в javajni внутри отдельного каталога, make-файл не видит его или отказывается видеть жесткую ссылку.

make: *** No rule to make target `test.cpp', needed by `test'.  Stop.

И в то время как в автономном каталоге я использую:

ln /home/user/dev/javajni/test.cpp test.cpp

Но когда я копирую весь файл поверх, он работает нормально.

Подумаешь? Не является ли оригинальный файл в исходном месте технически просто жесткой ссылкой на инод? Я просто хочу иметь возможность изменять файл в одном месте без необходимости копировать и вставлять его туда и обратно.

Если это вообще полезно, то так выглядит мой make-файл:

EX=test

all: $(EX)

.cpp.o:
g++ -c -O3 -Wall $<

clean:
rm -f $(EX) *.o *.atest:test.cpp;           g++ -Wall -o $@ $^

(Кстати, я изменил имя файла и каталогов в этом посте для упрощения)

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]