Как написать Makefile для компиляции c и c ++ на Ma c OSX - PullRequest
0 голосов
/ 01 мая 2020

Я скачал git проект.

Я пытаюсь скомпилировать с make-файлом на Ma c OSX (10.14.6)

, но мне не удалось с этой ошибкой

Я полагаю, что попытка скомпилировать файл c и cpp приводит к этой ошибке

Но она работает в Ubuntu 16.04

Как я могу это исправить?

терминал

clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
audio.c:140:15: error: assigning to 'PrivateAudioDevice *' (aka
      'privateAudioDevice *') from incompatible type 'void *'
    gDevice = calloc(1, sizeof(PrivateAudioDevice));
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
audio.c:166:30: error: assigning to 'Audio *' (aka 'sound *') from incompatible
      type 'void *'
    global = (gDevice->want).userdata;
             ~~~~~~~~~~~~~~~~^~~~~~~~
audio.c:243:13: error: cannot initialize a variable of type 'Audio *'
      (aka 'sound *') with an rvalue of type 'void *'
    Audio * new1 = calloc(1, sizeof(Audio));
            ^      ~~~~~~~~~~~~~~~~~~~~~~~~
audio.c:309:16: error: assigning to 'Audio *' (aka 'sound *') from incompatible
      type 'void *'
        new1 = malloc(sizeof(Audio));
               ^~~~~~~~~~~~~~~~~~~~~
4 errors generated.

Makefile

# Paths
OPENCV_PATH=/usr/local/include/opencv

# Programs
CC=
CXX=g++ 

# Flags
ARCH_FLAGS=

OPENCV = `pkg-config opencv --cflags --libs`
LIBS = $(OPENCV)
CFLAGS=-Wextra -Wall $(ARCH_FLAGS) -O3 -Wno-long-long
LDFLAGS=$(ARCH_FLAGS)
DEFINES=
INCLUDES=-I$(OPENCV_PATH)/include -Iinclude/
LIBRARIES=-L$(OPENCV_PATH)/lib -lopencv_core -lopencv_videoio -lopencv_highgui -lopencv_imgproc -lopencv_objdetect -lopencv_highgui
LINKER_FLAGS = -framework OpenGL -framework GLUT -lm -lSDL2 -lstdc++ -fpermissive -pthread
[...]
%.o: %.cc Makefile
    @# Make dependecy file
    $(CXX) -MM -MT $@ -MF $(patsubst %.cc,%.d,$<) $(CFLAGS) $(DEFINES) $(INCLUDES) $<
    @# Compile
    $(CXX) $(CFLAGS) $(DEFINES) -c -o $@ $< $(INCLUDES) $(LIBS)

-include $(DEPENDENCY_FILES)

bin/face_tracker: $(ALL_OBJECTS)
    $(CXX) $(LDFLAGS) -o $@ $(ALL_OBJECTS) audio.c  $(LIBRARIES) $(LINKER_FLAGS) $(LIBS)
[...]
...