我有以下目录结构:隐生成规则:GNU进行多次的Makefile多目录
.
..
./Graphic/
./Graphic/SymbolXLib
有在这个项目中其他几个目录,但我不会列出他们的纯朴sake.I希望主makefile驱动其他Makefiles的构建存储在自己的目录中。有几个项目合并在一起,所以我不能只是移动源代码。
[[email protected] Core]$ cat ./Makefile
CORE_LIBS_DIR = libs
OBJS_DIR = obj/symb_obj
include ./Graphic/SymbolXLib/Makefile
的图形生成文件中被定义为:
为主体的生成文件定义
#
# make BUILD_MODE={release|debug} OS_ARCH={32|64}
#
# default is 32-bit release build
#
BUILD_MODE = release
OS_ARCH = 64
OBJS_DIR = $(BUILD_MODE)$(OS_ARCH)
SRC = \
./Graphic/SymbolXLib/CartoCursor.cpp \
...
./Graphic/SymbolXLib/TextureConversion.cpp \
$(NULL)
CC = gcc -fPIC
OBJS = $(SRC:%.cpp=$(OBJS_DIR)/%.o)
COPTS = -m$(OS_ARCH) -O2
CDEFS = -DLINUXx86 \
-I../../../SharedArcGIS/Include/GraphicsPipeline/Display/SymbolX/SymbolXLib \
-I../../../SharedArcGIS/Include/System/Geometry/GeometryXLib \
-I../../../ArcSDE/pe/include \
-I../../../ArcSDE/shape/include
CFLAGS = $(COPTS) $(CDEFS) $(CINCS)
TARGET = libSymbolXLib.a
all : $(OBJS_DIR) $(OBJS_DIR)/$(TARGET)
$(OBJS_DIR) :
mkdir -p $(OBJS_DIR)
$(OBJS_DIR)/$(TARGET) : $(OBJS)
ar qc [email protected] $^
$(OBJS_DIR)/%.o : %.cpp
$(CC) -c $(CFLAGS) -o [email protected] $<
如果我搬来搬去的很多事情在以前的帖子(Previous Post)的回应不仅帮助。我不能这样做。所以问题仍然存在,我如何才能从主Makefile的子目录中识别隐式构建?
我得到的错误是
make: *** No rule to make target `release64/./Graphic/SymbolXLib/CartoCursor.o', needed by `release64/libSymbolXLib.a'. Stop.
您好!我可以问你对这个相关的问题的意见:http://stackoverflow.com/questions/24573413/make-setting-up-build-environment-for-multi-directory-research-workflows? (请在右侧的面板中查看我链接的问题。)谢谢! – 2014-07-05 14:02:58