Я кодирую в C++ и для этого отлично работает makefile. Затем, для цели проекта, мне пришлось выйти в интернет и найти код, чтобы делать то, что я хотел сделать. Выключает доступные файлы C-файлов, а также файлы C++. Когда, пытаясь скомпилировать сейчас, у меня есть этот Undefined символы для ошибки архитектуры x86_64. И я уверен, что это потому, что я неправильно адаптировал свой make-файл. Я изо всех сил пытаюсь найти ответы, но ничего не работает для меня. Может быть, если кто-то взглянет на этот make-файл, это будет проще, я думаю. Также я заметил, что ни один из файлов .o не создан для моих файлов .c, но они сделаны для .cppВключить файлы C в C + + makefile
Надеюсь, кто-то может помочь. Я застрял на нем в течение 3 дней
##### Configurable options:
# ---------------------------------------------------------------------
# Compiler section
# ---------------------------------------------------------------------
## Compiler:
CC=gcc
#CC=cc
CPP=g++
## Compiler flags:
# GCC: (also -march=pentium etc, for machine-dependent optimizing)
CFLAGS=-Wall -O3 -fomit-frame-pointer -funroll-loops
LDFLAGS=-L/usr/local/lib
LIBS=-lopenbabel
CPPFLAGS=$(CFLAGS) -I Project/Lib/openbabel-2.0/ -I ProjectCode/Include/ -I ProjectCode/Lib/boost_1_60_0/
CXXFLAGS=-Wall -g -std=c++11 -I.
# GCC w/ debugging:
#CFLAGS=-Wall -g -DINLINE
# Compaq C/Digital C:
#CFLAGS=-arch=host -fast
# SunOS:
#CFLAGS=-fast
## Program options:
# Enable long options for cl (eg. "cl --help"), comment out to disable.
# Requires getopt_long(3) (a GNU extension)
LONGOPTS = -DENABLE_LONG_OPTIONS
# ---------------------------------------------------------------------
# Directories section
# ---------------------------------------------------------------------
OBJFILES = ProjectCode/Objects/Project.o ProjectCode/Objects/stdafx.o ProjectCode/Objects/BoxTools.o ProjectCode/Objects/TanimotoStruct.o
COBJFILES = ProjectCode/Objects/cliquer.o ProjectCode/Objects/graph.o ProjectCode/Objects/reorder.o
EXEC = Project
# ---------------------------------------------------------------------
# Compilation section
# ---------------------------------------------------------------------
ProjectCode/Objects/%.o: ProjectCode/Source/%.c
$(CC) -o [email protected] -c $< $(CFLAGS) $(LIBS)
ProjectCode/Objects/%.o: ProjectCode/Source/%.cpp
$(CPP) $(CPPFLAGS) -o [email protected] -c $<
Project: $(OBJFILES)
$(CPP) $(LDFLAGS) -o [email protected] $^ $(CXXFLAGS) $(LIBS);
# ---------------------------------------------------------------------
# Cleaning section
# ---------------------------------------------------------------------
clean:
rm -f ProjectCode/Objects/*.o $(EXEC)
Вы убедились, что 'extern 'C" {'используется, когда вы ссылаетесь на заголовки функций C из вашего кода на C++? –
Да, это включено как указано ниже: extern "C" { #include "cliquer.h" } – ChrisTremblay
Имейте в виду, что в соглашениях 'make' /' autotools' CPP = ваш препроцессор C. CXX = ваш компилятор C++. –