我正在编写一个新的Makefile,并想将我的目标文件复制到obj /文件夹中。我试图添加OBJ目录文件夹,但是没有接听。我确定我缺少什么。现在,我在编译后将.o文件从src /文件夹移到obj /文件夹。
请让我知道如何在此Makefile中添加INCLUDES和LIB_INCLUDES。由于Makefile中没有包含路径,因此希望我在包含头文件的同时在源代码中指定完整(相对)路径。
此外,我想在可执行文件中静态包含一些外部库(LD_LIBRARY_PATH),因此如何在Makefile中指定它们:
xhtml:input
为此请求创建了单独的线程-lubgr。
答案 0 :(得分:0)
尝试一下(为简洁起见,我剥离了.depend
部分和两个clean
目标):
APPNAME := MyApp.x
SOURCE_DIR := src
INCLUDE_DIR := include
OBJECT_DIR := obj
BIN_DIR := bin
CC := g++
CCFLAGS := -g -Wall
SRCFILES := $(wildcard $(SOURCE_DIR)/*.cpp)
INCLUDES := $(INCLUDE_DIR)
OBJECTS := $(SRCFILES:$(SOURCE_DIR)/%.cpp=$(OBJECT_DIR)/%.o)
all: $(BIN_DIR)/$(APPNAME)
$(BIN_DIR)/$(APPNAME): $(OBJECTS)
$(CC) $(CCFLAGS) -o $@ $(OBJECTS)
$(OBJECT_DIR)/%.o: $(SOURCE_DIR)/%.cpp
$(CC) $(CCFLAGS) -I$(INCLUDES) -o $@ -c $<
对于其他静态库,您可以将它们像对象文件一样传递给链接器,例如
STATIC_LIBS = lib/libfirst.a lib/libsecond.a
$(BIN_DIR)/$(APPNAME): $(OBJECTS)
$(CC) $(CCFLAGS) -o $@ $(OBJECTS) $(STATIC_LIBS)
在链接到共享库时,这有所不同,但是正如您所说的,所有库都被编译成静态库,这应该可以工作。