Makefile 试图编译卡萨布兰卡代码时使文件不起作用
我的应用程序使用卡萨布兰卡进行REST通信,我是第一次使用它。如果我使用下面的简单行来编译没有问题 g++-std=c++11 main.cpp x1.cpp x3.cpp x2.cpp-o myfile-lboost_system-lcrypto-lssl-lcpprest 但我尝试为上述内容编写一个makefile(我是第一次编写),如下所示:Makefile 试图编译卡萨布兰卡代码时使文件不起作用,makefile,Makefile,我的应用程序使用卡萨布兰卡进行REST通信,我是第一次使用它。如果我使用下面的简单行来编译没有问题 g++-std=c++11 main.cpp x1.cpp x3.cpp x2.cpp-o myfile-lboost_system-lcrypto-lssl-lcpprest 但我尝试为上述内容编写一个makefile(我是第一次编写),如下所示: CXX := g++ CXXFLAGS := -std=c++11 LDFLAGS := -L/usr/lib/x86_64-linux
CXX := g++
CXXFLAGS := -std=c++11
LDFLAGS := -L/usr/lib/x86_64-linux-gnu/ -lboost_system -lcrypto -lssl -lcpprest
BUILD := build
OBJ_DIR := $(BUILD)/objects
APP_DIR := $(BUILD)/apps
TARGET := fdvdapp
INCLUDE := -Iinclude/
SRC := $(wildcard *.cpp)
OBJECTS := $(SRC:%.cpp=$(OBJ_DIR)/%.o)
all: build $(TARGET)
$(OBJ_DIR)/%.o: %.cpp
@mkdir -p $(@D)
$(CXX) $(CXXFLAGS) $(INCLUDE) -o $@ -c $<
$(TARGET): $(OBJECTS)
@mkdir -p $(@D)
$(CXX) $(CXXFLAGS) $(INCLUDE) $(LDFLAGS) -o $(APP_DIR)/$(TARGET) $(OBJECTS)
.PHONY: all build clean
build:
@mkdir -p $(APP_DIR)
@mkdir -p $(OBJ_DIR)
clean:
rm -rf build/*
CXX:=g++
CXXFLAGS:=-std=c++11
LDFLAGS:=-L/usr/lib/x86_64-linux-gnu/-lboost_system-lcrypto-lssl-lcpprest
构建:=构建
对象目录:=$(构建)/对象
应用程序目录:=$(构建)/应用程序
目标:=fdvdapp
包括:=-i包括/
SRC:=$(通配符*.cpp)
对象:=$(SRC:%.cpp=$(OBJ_DIR)/%.o)
全部:生成$(目标)
$(对象目录)/%.o:%.cpp
@mkdir-p$(@D)
$(CXX)$(CXXFLAGS)$(包括)-o$@-c$<
$(目标):$(对象)
@mkdir-p$(@D)
$(CXX)$(CXXFLAGS)$(包括)$(LDFLAGS)-o$(应用程序目录)/$(目标)$(对象)
.骗子:一切都要干净利落
建造:
@mkdir-p$(应用程序目录)
@mkdir-p$(OBJ_DIR)
清洁:
rm-rf构建/*
上面所述使dosent似乎起作用了,因为我得到了所有使用的库的未定义的引用错误
有什么问题吗?指向LDFLAGS:=-L/usr/lib/x86\u 64-linux-gnu-lboost\u system-lcrypto-lssl-lcpprest您是否尝试更改此行
$(CXX)$(cxflags)$(INCLUDE)$(LDFLAGS)-o$(APP\u DIR)/$(TARGET)$(OBJECTS)
,即将$(OBJECTS)
移到$(APP DIR)
部分之前?也许这会有帮助…您是否也可以添加错误的输出?所以我们知道,你的链接器在抱怨什么……你的所有包含文件都在文件夹include/
中还是在子文件夹中?