makefiles и связывание библиотеки в другой папке - PullRequest
1 голос
/ 07 октября 2011

Я немного обыскал StackOverflow и попробовал несколько предложений, но пока проблема не решена.

Я делаю make-файл для школьного проекта и в рамках своего проекта яСоздаю статическую библиотеку и ссылаюсь на нее.Компилятор выдает ошибку, когда попадает в заголовок, включаемый в статическую библиотеку.Код для этого просто #include "StringUtil.h"

Так что в make-файле у меня есть эти соответствующие части кода

LINKFLAGS=-Llib/ -lHTMLtools

bin : lib $(BIN_FILE)
lib : $(LIB_OBJ_FILES)
    ar r lib/libHTMLtools.a $(LIB_OBJ_FILES)

$(BIN_FILE) : $(OBJ_FILES) #This is only obj/crawler.o for now
    g++ -o bin/crawler obj/crawler.o
obj/crawler.o : src/crawler.cpp inc/crawler.h
    g++ -c -static $(LINKFLAGS) -o obj/crawler.o -I inc src/crawler.cpp

, поэтому всякий раз, когда я запускаю команду make bin, она генерирует lib.libHTMLtools.a какожидается, но когда он доберется до строки
g++ -c -static $(LINKFLAGS) -o obj/crawler.o -I inc src/crawler.cpp
, он вернет эту ошибку.

src/crawler.cpp:2:24: fatal error: StringUtil.h: No such file or directory compilation terminated.

Любая помощь или совет будут оценены!

1 Ответ

4 голосов
/ 07 октября 2011

В C ++ файлов библиотеки недостаточно.Они не используются при компиляции исходного кода, а только при компоновке.Чтобы скомпилировать исходный файл, вам нужно включить заголовки.Но компилятору нужно знать, где его найти.Попробуйте добавить -I utils/inc к вашей последней строке, как это

g++ -c -static $(LINKFLAGS) -o obj/crawler.o -I inc -I utils/inc src/crawler.cpp
...