diff --git a/cmake/CORALBuildFlags.cmake b/cmake/CORALBuildFlags.cmake
index 6d151baceca71c3518527ba72afd5b857e378d7d..a7770aedb3b5aa2bd05f68e37d682077dd8fcdaf 100644
--- a/cmake/CORALBuildFlags.cmake
+++ b/cmake/CORALBuildFlags.cmake
@@ -1,15 +1,32 @@
 # Build options
 option(BUILD_SHARED_LIBS "Set to OFF to build static libraries." ON)
 
-# Build flags
+# Build flags (C++ std)
+# [NB Keep flags passed from outside, e.g. from lcgcmake (CORALCOOL-2854)]
+IF(NOT CMAKE_CXX_FLAGS MATCHES "std=c\\+\\+11" AND NOT CMAKE_CXX_FLAGS MATCHES "std=c\\+\\+1y" AND NOT CMAKE_CXX_FLAGS MATCHES "std=c\\+\\+14")
+  IF(BINARY_TAG MATCHES "clang")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
+  ELSEIF(BINARY_TAG MATCHES "gcc5")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
+  ELSEIF(BINARY_TAG MATCHES "gcc49")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1y")
+  ELSEIF(BINARY_TAG MATCHES "gcc48")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+  ENDIF()
+ENDIF()
+
+# Build flags (warnings and other common options)
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Wno-long-long -Wno-deprecated -pthread -fPIC")
+
+# Build flags (other platform-dependent settings)
 IF(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin")
-  set(CMAKE_CXX_FLAGS "-pedantic -Wall -Wextra -Wno-long-long -Wno-deprecated -pthread -std=c++11 -fPIC")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
 ELSEIF(BINARY_TAG MATCHES "clang35") # See CORALCOOL-2821
-  ###set(CMAKE_CXX_FLAGS "-pedantic -Wall -Wextra -Wno-long-long -Wno-deprecated -pthread -std=c++11 -fPIC --gcc-toolchain=/afs/cern.ch/sw/lcg/external/gcc/4.9.1/x86_64-slc6")
-  set(CMAKE_CXX_FLAGS "-pedantic -Wall -Wextra -Wno-long-long -Wno-deprecated -pthread -std=c++11 -fPIC --gcc-toolchain=/cvmfs/sft.cern.ch/lcg/releases/gcc/4.9.1/x86_64-slc6")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --gcc-toolchain=/cvmfs/sft.cern.ch/lcg/releases/gcc/4.9.1/x86_64-slc6") # cvmfs instead of AFS, see CORALCOOL-2855
 ELSEIF(BINARY_TAG MATCHES "clang37") # See CORALCOOL-2821
-  ###set(CMAKE_CXX_FLAGS "-pedantic -Wall -Wextra -Wno-long-long -Wno-deprecated -pthread -std=c++11 -fPIC --gcc-toolchain=/afs/cern.ch/sw/lcg/external/gcc/4.9.3/x86_64-slc6")
-  set(CMAKE_CXX_FLAGS "-pedantic -Wall -Wextra -Wno-long-long -Wno-deprecated -pthread -std=c++11 -fPIC --gcc-toolchain=/cvmfs/sft.cern.ch/lcg/releases/gcc/4.9.3/x86_64-slc6") # use cvmfs, see CORALCOOL-2855
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --gcc-toolchain=/cvmfs/sft.cern.ch/lcg/releases/gcc/4.9.3/x86_64-slc6") # cvmfs instead of AFS, see CORALCOOL-2855
 ELSE()
-  set(CMAKE_CXX_FLAGS "-pedantic -Wall -Wextra -Wno-long-long -Wno-deprecated -pthread -std=c++11 -fPIC -Wl,--no-undefined")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--no-undefined")
 ENDIF()
+
+message(STATUS "Using CMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}")
diff --git a/setupCMake.sh b/setupCMake.sh
index 84ee61db33f8a952ebf0e7511b30c14598ba0653..e0f3fe59e9da06a74acdee95dcc755c804953deb 100644
--- a/setupCMake.sh
+++ b/setupCMake.sh
@@ -96,6 +96,9 @@ export CCACHE_DIR=$topdir/.ccache # keep this here to allow interactive queries
 export LCG_releases_base=/cvmfs/sft.cern.ch/lcg/releases/LCG_${lcg_xx}
 export CORALCOOL_CMAKE_LCGSUMMARY=${LCG_releases_base}/LCG_externals_${BINARY_TAG}.txt
 
+# Test passing CMAKE_CXX_FLAGS as in lcgcmake
+###export CMAKEFLAGS="-DCMAKE_CXX_FLAGS=-std=c++1y $CMAKEFLAGS"
+
 # Add setup overrides if any are present
 if [ -f $topdir/overrideSetupCMake.sh ]; then
   echo "INFO: override defaults using $topdir/overrideSetupCMake.sh"