Java 为什么赢了';我的Makefile是否使用指向我要编译的文件的硬链接?
这有点混乱,但是我有一个.cpp文件,我想用两种不同的方式使用它;作为使用JNI的java类调用的c类,以及作为独立的c程序。这是因为这个代码在机器之间来回移动,有时我想直接运行和编译C++代码,而不是运行java和java运行它。(C++代码有一个主要方法,它只在独立版本中运行)。 总之,我在/home/user/dev/javajni/中有文件(test.cpp)和它附带的java源代码(test.java)。但是,我还希望能够在/home/user/dev/standalone/中将其编译为独立的。在独立目录中,我有一个make文件,它只编译c程序 无论如何,当我在独立目录中对javajni中的文件进行硬链接时,makefile没有看到它,或者拒绝看到硬链接Java 为什么赢了';我的Makefile是否使用指向我要编译的文件的硬链接?,java,c++,makefile,compilation,hardlink,Java,C++,Makefile,Compilation,Hardlink,这有点混乱,但是我有一个.cpp文件,我想用两种不同的方式使用它;作为使用JNI的java类调用的c类,以及作为独立的c程序。这是因为这个代码在机器之间来回移动,有时我想直接运行和编译C++代码,而不是运行java和java运行它。(C++代码有一个主要方法,它只在独立版本中运行)。 总之,我在/home/user/dev/javajni/中有文件(test.cpp)和它附带的java源代码(test.java)。但是,我还希望能够在/home/user/dev/standalone/中将其编译
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 $@ $^
EX=测试
全部:$(EX)
.cpp.o:
g++-c-O3-壁$<
清洁:
rm-f$(汇率)*.o*.a
test:test.cpp;g++-Wall-o$@$^
(仅供参考,为了简化起见,我确实更改了本文中的文件名和目录)cat test.cpp是否在
standalone
文件夹中工作?检查/home/user/dev/javajni/test.cpp
上的时间戳,检查系统时钟,看看您是否觉得奇怪。请记住,如果您创建了硬链接,并且.o
文件较新,则不会重新编译。感谢您的快速回复。艾略特:一些奇怪的行为,起初它告诉我文件没有找到。然而,我确实改变了这一点,现在cat确实通过硬链接将文件内容输出到独立文件夹中。我确实在javajni
位置的文件行中做了更改,所以可能就是这样?无论如何,make程序仍然看不到它。山姆:因为这是一个单独的.cpp文件,所以没有.o
文件,对吗?还是我遗漏了一些关于编译工作原理的基本信息?是否需要硬链接?为什么不使用软链接呢?软链接也不起作用。cat test.cpp
是否在standalone
文件夹中起作用?检查/home/user/dev/javajni/test.cpp
上的时间戳,并检查系统时钟,看看您是否觉得奇怪。请记住,如果您创建了硬链接,并且.o
文件较新,则不会重新编译。感谢您的快速回复。艾略特:一些奇怪的行为,起初它告诉我文件没有找到。然而,我确实改变了这一点,现在cat确实通过硬链接将文件内容输出到独立文件夹中。我确实在javajni
位置的文件行中做了更改,所以可能就是这样?无论如何,make程序仍然看不到它。山姆:因为这是一个单独的.cpp文件,所以没有.o
文件,对吗?还是我遗漏了一些关于编译工作原理的基本信息?是否需要硬链接?为什么不使用软链接呢?软链接也不起作用。