Это должно сделать работу. Вы действительно не связывались с CURL раньше.
build: $(SOURCES)
$(CXX) -o $(OUT) $(INCLUDE) $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(SOURCES)
Обратите внимание на добавлено $(LDLIBS)
.
О, я должен добавить, что в основном вы выбрасываете за борт встроенные правила GNU make (см. Вывод make -np
) и определяете свои собственные. Я бы посоветовал вам либо использовать встроенные, если вы хотите полагаться на соответствующие переменные, чтобы их было достаточно для управления сборкой, либо вы все еще разбиваете его на этапы компиляции и компоновки для краткости.
Краткое объяснение: GNU make поставляется с правилом, которое устанавливает, как сделать файл .o
из файла .cpp
(или .c
). Таким образом, ваш файл make может быть переписан (приблизительно)
# Testing cURL
# MAKEFILE
# C++ Compiler (Default: g++)
CXX = g++
CFLAGS = -Wall -Werror
# Librarys
INCLUDE = -I/usr/local/include
LDFLAGS = -L/usr/local/lib
LDLIBS = -lcurl
# Details
SOURCES = src/main.cpp
OUT = test
.PHONY: all
all: build
$(OUT): $(patsubst %.cpp,%.o,$(SOURCES))
Это должно сгенерировать двоичный файл с именем test
(содержимое OUT
) и в противном случае использовать встроенные правила. Сделайте выводы из использования .o
файлов, которые должны быть исходными файлами, поищите их и скомпилируйте их. Таким образом, неявно эта сборка будет запускать один вызов для каждого файла .cpp
и один для этапа компоновки.