title: OpenCV 4.x+ requires enabled C++11 support compilation darknet fatal error
body: <p>I just compiled and installed the last version of OpenCV 3.4.0 and I would like to compile darknet (for yolo object detection), but at compilation, I have</p>
  
  <pre><code>gcc -Iinclude/ -Isrc/ -DOPENCV `pkg-config --cflags opencv`  -DGPU -I/usr/local/cuda-9.1/include/ -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -fPIC -Ofast -DOPENCV  -DGPU  -c ./src/gemm.c -o obj/gemm.o
  In file included from /usr/local/include/opencv2/core/types_c.h:59:0,
                   from /usr/local/include/opencv2/core/core_c.h:48,
                   from /usr/local/include/opencv2/highgui/highgui_c.h:45,
                   from include/darknet.h:25,
                   from ./src/utils.h:5,
                   from ./src/gemm.c:2:
  /usr/local/include/opencv2/core/cvdef.h:421:4: error: #error "OpenCV 4.x+ requires enabled C++11 support"
   #  error "OpenCV 4.x+ requires enabled C++11 support"
      ^
  compilation terminated due to -Wfatal-errors.
  Makefile:86: recipe for target 'obj/gemm.o' failed
  make: *** [obj/gemm.o] Error 1
  </code></pre>
  
  <p>How it is possible, because in Makefile (below), I compile C </p>
  
  <pre><code>GPU=1
  CUDNN=0
  OPENCV=1
  OPENMP=0
  DEBUG=0
  
  ARCH= -gencode arch=compute_30,code=sm_30 \
        -gencode arch=compute_35,code=sm_35 \
        -gencode arch=compute_50,code=[sm_50,compute_50] \
        -gencode arch=compute_52,code=[sm_52,compute_52]
  #      -gencode arch=compute_20,code=[sm_20,sm_21] \ This one is deprecated?
  
  # This is what I use, uncomment if you know your arch and want to specify
  # ARCH= -gencode arch=compute_52,code=compute_52
  
  VPATH=./src/:./examples
  SLIB=libdarknet.so
  ALIB=libdarknet.a
  EXEC=darknet
  OBJDIR=./obj/
  
  CC=gcc
  NVCC=nvcc 
  NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
  AR=ar
  ARFLAGS=rcs
  OPTS=-Ofast
  LDFLAGS= -lm -pthread 
  COMMON= -Iinclude/ -Isrc/
  CFLAGS=-Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -fPIC
  
  ifeq ($(OPENMP), 1) 
  CFLAGS+= -fopenmp
  endif
  
  ifeq ($(DEBUG), 1) 
  OPTS=-O0 -g
  endif
  
  CFLAGS+=$(OPTS)
  
  ifeq ($(OPENCV), 1) 
  COMMON+= -DOPENCV
  CFLAGS+= -DOPENCV 
  LDFLAGS+= `pkg-config --libs opencv` 
  COMMON+= `pkg-config --cflags opencv` 
  endif
  
  ifeq ($(GPU), 1) 
  COMMON+= -DGPU -I/usr/local/cuda-9.1/include/
  CFLAGS+= -DGPU 
  LDFLAGS+= -L/usr/local/cuda-9.1/lib64 -lcudart -lcublas -lcurand
  endif
  
  ifeq ($(CUDNN), 1) 
  COMMON+= -DCUDNN 
  CFLAGS+= -DCUDNN 
  LDFLAGS+= -lcudnn
  endif
  
  OBJ=gemm.o utils.o cuda.o deconvolutional_layer.o convolutional_layer.o list.o image.o activations.o im2col.o col2im.o blas.o crop_layer.o dropout_layer.o maxpool_layer.o softmax_layer.o data.o matrix.o network.o connected_layer.o cost_layer.o parser.o option_list.o detection_layer.o route_layer.o upsample_layer.o box.o normalization_layer.o avgpool_layer.o layer.o local_layer.o shortcut_layer.o logistic_layer.o activation_layer.o rnn_layer.o gru_layer.o crnn_layer.o demo.o batchnorm_layer.o region_layer.o reorg_layer.o tree.o  lstm_layer.o l2norm_layer.o yolo_layer.o
  EXECOBJA=captcha.o lsd.o super.o art.o tag.o cifar.o go.o rnn.o segmenter.o regressor.o classifier.o coco.o yolo.o detector.o nightmare.o darknet.o
  ifeq ($(GPU), 1) 
  LDFLAGS+= -lstdc++ 
  OBJ+=convolutional_kernels.o deconvolutional_kernels.o activation_kernels.o im2col_kernels.o col2im_kernels.o blas_kernels.o crop_layer_kernels.o dropout_layer_kernels.o maxpool_layer_kernels.o avgpool_layer_kernels.o
  endif
  
  EXECOBJ = $(addprefix $(OBJDIR), $(EXECOBJA))
  OBJS = $(addprefix $(OBJDIR), $(OBJ))
  DEPS = $(wildcard src/*.h) Makefile include/darknet.h
  
  #all: obj backup results $(SLIB) $(ALIB) $(EXEC)
  all: obj  results $(SLIB) $(ALIB) $(EXEC)
  
  
  $(EXEC): $(EXECOBJ) $(ALIB)
      $(CC) $(COMMON) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(ALIB)
  
  $(ALIB): $(OBJS)
      $(AR) $(ARFLAGS) $@ $^
  
  $(SLIB): $(OBJS)
      $(CC) $(CFLAGS) -shared $^ -o $@ $(LDFLAGS)
  
  $(OBJDIR)%.o: %.c $(DEPS)
      $(CC) $(COMMON) $(CFLAGS) -c $&lt; -o $@
  
  $(OBJDIR)%.o: %.cu $(DEPS)
      $(NVCC) $(ARCH) $(COMMON) --compiler-options "$(CFLAGS)" -c $&lt; -o $@
  
  obj:
      mkdir -p obj
  backup:
      mkdir -p backup
  results:
      mkdir -p results
  
  .PHONY: clean
  
  clean:
      rm -rf $(OBJS) $(SLIB) $(ALIB) $(EXEC) $(EXECOBJ) $(OBJDIR)
  </code></pre>
  
  <p>And what's the solution for this error ? How I can enable C++11 support ?</p>
  
  <p>Thank for your help !</p>