为什么我的Makefile不会使用我要编译的文件的硬链接?

时间:2016-10-12 22:18:18

标签: java c++ makefile compilation hardlink

所以这有点乱,但是我有一个.cpp文件,我希望以两种不同的方式使用它;作为使用JNI的java类调用的c类,以及作为独立的c程序。原因是因为这个代码在机器之间移动,有时我想直接运行和编译c ++代码而不是运行java并让java运行它。 (c ++代码有一个只在独立版本中运行的main方法。)

所以无论如何我在/ home / user / dev / javajni /中有文件(test.cpp)和它的java源代码(test.java)。但是,我也希望能够在/ home / user / dev / standalone /中独立编译它。在独立目录中,我有一个只编译c程序的make文件。

无论如何,当我在独立目录中的javajni中创建一个硬链接时,makefile没有看到它,或者拒绝看到硬链接。

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

在独立目录中我使用:

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

但是当我复制整个文件时,它工作正常。

有什么大不了的?原始位置的原始文件在技术上是不是也是inode的硬链接?我只是希望能够在一个位置更改文件,而无需来回复制和粘贴它。

如果有用,这就是我的makefile:

EX=test

all: $(EX)

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

clean:
    rm -f $(EX) *.o *.a


test:test.cpp;           g++ -Wall -o $@ $^

(我确实更改了文件的名称和本文中的目录以简化)

0 个答案:

没有答案