I ran into a problem today. I changed the areaDetector/ADCore/ADApp/pluginSrc/Makefile to add this line because I need it for a new plugin:
USR_CXXFLAGS_Linux += -std=c++11
The new plugin works, but now I get the following error when I link any areaDetector IOC:
/home/epics/devel/areaDetector-3-10/ADSupport/supportApp/GraphicsMagickSrc/jp2/src/libjasper/O.linux-x86_64/../../../../../../supportApp/GraphicsMagickSrc/jp2/src/libjasper/base/jas_stream.c:368:
warning: the use of `tmpnam' is dangerous, better use `mkstemp'
/home/epics/devel/areaDetector-3-10/ADCore/lib/linux-x86_64/libNDPlugin.a(NDPluginPva.o): In function `NTNDArrayRecord':
/home/epics/devel/areaDetector-3-10/ADCore/ADApp/pluginSrc/O.linux-x86_64/../NDPluginPva.cpp:32: undefined reference to `epics::pvDatabase::PVRecord::PVRecord(std::string
const&, std::shared_ptr<epics::pvData::PVStructure> const&)'
/home/epics/devel/areaDetector-3-10/ADCore/lib/linux-x86_64/libNDPlugin.a(NDPluginPva.o): In function `NDPluginPva::NDPluginPva(char const*, int, int, char const*, int,
char const*, int, unsigned long, int, int)':
/home/epics/devel/areaDetector-3-10/ADCore/ADApp/pluginSrc/O.linux-x86_64/../NDPluginPva.cpp:177: undefined reference to `epics::pvDatabase::PVDatabase::addRecord(std::shared_ptr<epics::pvDatabase::PVRecord>
const&)'
/home/epics/devel/areaDetector-3-10/ADCore/lib/linux-x86_64/libNDPlugin.a(NDPluginPva.o): In function `NTNDArrayRecord::init()':
/home/epics/devel/areaDetector-3-10/ADCore/ADApp/pluginSrc/O.linux-x86_64/../NDPluginPva.cpp:64: undefined reference to `epics::nt::NTNDArray::wrap(std::shared_ptr<epics::pvData::PVStructure>
const&)'
/home/epics/devel/areaDetector-3-10/ADCore/ADApp/pluginSrc/O.linux-x86_64/../NDPluginPva.cpp:65: undefined reference to `NTNDArrayConverter::NTNDArrayConverter(std::shared_ptr<epics::nt::NTNDArray>)'
/home/epics/devel/areaDetector-3-10/ADCore/lib/linux-x86_64/libNDPlugin.a(NDPluginPva.o):(.data.rel.ro._ZTV15NTNDArrayRecord[_ZTV15NTNDArrayRecord]+0x20): undefined reference
to `epics::pvDatabase::PVRecord::nextMasterPVField(std::shared_ptr<epics::pvData::PVField> const&)'
collect2: error: ld returned 1 exit status
I am running base 7.0.5.
Is this because if I build NDPluginPVA with the c++11 flag I also need to build base with the same flag?
Can I tell the EPICS build system to only compile my new plugin with that flag, and not all files in the pluginSrc directory?
Thanks,
Mark