【发布时间】:2011-10-06 23:58:55
【问题描述】:
我在 StackOverflow 上进行了一些搜索并尝试了一些建议,但到目前为止还没有解决问题。
我正在为一个学校项目制作一个 makefile,作为我项目的一部分,我正在生成一个静态库并链接它。编译器在到达静态库中包含的标头时会引发错误。代码就是#include "StringUtil.h"
所以在makefile中我有这些相关的代码部分
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.
任何帮助或建议将不胜感激!
【问题讨论】:
-
您的 StringUtil.h 文件在哪里?如果它不在“inc”目录中,它不会找到它
-
它是我构建的库的一部分。但如果在到期之前找不到其他方法,我总是可以从 utils/inc/StringUtil.h 中引用它
-
@bob 当您说它是您构建的库的一部分时,您的意思是在构建静态库时将头文件复制到特定的输出目录吗?您还可以添加源代码和二进制输出的目录结构吗?
-
no :/ 我认为它们不会被复制...应该吗?我只是想象 .h 文件被捆绑在 .a 文件中......
-
@bob 不,它不是这样工作的。详情请查看疯狂的答案。
标签: c++ makefile static-libraries