【发布时间】:2021-03-03 00:17:28
【问题描述】:
我正在尝试将 ASIO 库用于网络项目。我的项目和 ASIO 头文件位于不同的目录中。编译我的 main.cpp(它只包含 asio.hpp 和 iostream)工作得很好,但是 make depend 命令会产生一个错误提示未找到 asio.hpp。我该如何解决这个问题?
CC = g++
ASIO = -I /Users/user1/Desktop/SDK/asio-1.18.0/include
CFLAGS = -Wall -g -std=c++11 ${ASIO}
SRCS = main.cpp
#SRCS = ${wildcard *.cpp}
OBJS = ${SRCS:.cpp=.o}
INCLS = ${SRCS:.cpp= main.h}
a.out: $(OBJS)
$(CC) $(CFLAGS) $(OBJS)
$(OBJS):
$(CC) $(CFLAGS) -c $*.cpp
depend: Makefile.dep
$(CC) -MM $(SRCS) > Makefile.dep
Makefile.dep:
touch Makefile.dep
clean:
rm -f $(OBJS) a.out core a.exe
include Makefile.dep
【问题讨论】:
-
是否需要在依赖 CC 命令中包含 CFLAGS?
-
您必须在
Makefile.dep中有一个过时的依赖项,尝试将这个包含的文件归零。即使您正在尝试构建它,在此之前make仍将读取其当前内容并尝试解决它。您应该花一些时间来研究 automake 如何处理这种情况。 -
您绝对应该阅读以下内容:Auto-Dependency Generation。作者(Paul D. Smith)是 GNU make 的主要维护者,我认为你找不到关于这个主题的更好解释。
标签: c++ makefile dependencies boost-asio header-files