I'm trying to build a go project that uses a third party library (GDAL) that's written in C and C++. I've run into this error:
In file included from contour.cpp:31:0: cpl_port.h:187:6: error: #error Must have C++11 or newer. # error Must have C++11 or newer. ^ In file included from C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/type_traits:35:0, from cpl_conv.h:372, from contour.cpp:39: C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. #error This file requires compiler and library support for the \ ^ Some searching tells me this is expected, and the fix is to simply set a flag on the compiler (not go related, but still pertinent).
I've read through go's documentation on building, and while it suggests it's possible to specify options to individual compilers, it doesn't explicitly spell out how, nor does it provide any examples.
I've tried the following just guessing, and while the go build command accepts them, they produce the same error, so they don't work.
go build -gcflags -std=gnu++11 -ldflags -std=gnu++11 go build -gcflags -std=c++11 -ldflags -std=c++11 go build -gcflags -std=c++11 go build -gcflags -std=all=gnu++11 -ldflags -std=all=gnu++11 How can I tell go to tell gcc to compile with C++11 or newer?
Edit: As requested by PeterSO:
H:\>go version go version go1.10.2 windows/amd64 H:\>go env set GOARCH=amd64 set GOBIN= set GOCACHE=C:\Users\ksexton\AppData\Local\go-build set GOEXE=.exe set GOHOSTARCH=amd64 set GOHOSTOS=windows set GOOS=windows set GOPATH=H:\ksexton\Go; set GORACE= set GOROOT=C:\Go set GOTMPDIR= set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64 set GCCGO=gccgo set CC=gcc set CXX=g++ set CGO_ENABLED=1 set CGO_CFLAGS=-g -O2 set CGO_CPPFLAGS= set CGO_CXXFLAGS=-g -O2 set CGO_FFLAGS=-g -O2 set CGO_LDFLAGS=-g -O2 set PKG_CONFIG=pkg-config set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\ksexton\AppData\Local\Temp\go-build937852322=/tmp/go-build -gno-record-gcc-switches H:\>gcc --version gcc (tdm64-1) 5.1.0 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. H:\>g++ --version g++ (tdm64-1) 5.1.0 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
CGO_CFLAGS, CGO_CPPFLAGS, CGO_CXXFLAGS, CGO_FFLAGS and CGO_LDFLAGS