У меня есть следующие Makefile (для с ++)Почему мой makefile с включенным заголовком не работает?
LDLIBS=$(shell root-config --libs)
INCLUDE= -I/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/include \
-I/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/include/darwin \
foo: foo.o
$(CXX) -shared -fPIC $(LDLIBS) $(INCLUDE) -o foo.o foo.cpp
foo.cpp имеет следующие включает
#include <jvmti.h>
Если я запускаю команду "g++ -shared -fPIC -I..."
вручную, он будет производить foo.o
, как и ожидалось.
Но когда я бегу make
, я получаю эту ошибку
$ make
c++ -c -o foo.o foo.cpp
lib_track_npe.cpp:1:10: fatal error: 'jvmti.h' file not found
#include <jvmti.h>
^
1 error generated.
make: *** [foo.o] Error 1
Может кто-то пожалуйста, скажите мне, что я сделал неправильно в Makefile?
Благодаря
Вы можете отправить команду: 'pwd', когда вы вводите ее сразу после ввода' g ++ ... 'вручную? – Amadeus
pwd - текущий каталог (где foo.cpp). Пожалуйста, не то, что в моем '-I' я указал абсолютный путь. Следовательно, не имеет значения, где я называю это –
Да, это должно быть. Вручную вы передаете -I .. это означает, что родительский каталог находится в пути поиска – Amadeus