所以这有点乱,但是我有一个.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 $@ $^
(我确实更改了文件的名称和本文中的目录以简化)