I have uploaded a minimum example at
https://github.com/PetterS/emscripten_cmake which uses CMake to build a program.
It works fine (on Windows) as it is. However, I am using the CMake command
add_definitions("-std=c++11")
to enable C++11. This is a problem if I also have some C files I want to compile in my project. I have tried
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++11")
but that fails with the message
FAILED: c:\Program\Emscripten\emscripten\1.21.0\em++.bat --std=c++11 -DNDEBUG -O2 -MMD -MT CMakeFiles\my_program.dir\
my_program.cpp.o -MF "CMakeFiles/my_program.dir/my_program.cpp.o.d" -o CMakeFiles\my_program.dir\my_program.cpp.o -c c:\
Users\Petter\Dropbox\Programming\emscripten-test\my_program.cpp
c:\Users\Petter\Dropbox\Programming\emscripten-test\my_program.cpp:10:2: warning: 'auto' type specifier is a C++11 exten
sion [-Wc++11-extensions]
auto my_numbers = {1, 2, 3};
^
c:\Users\Petter\Dropbox\Programming\emscripten-test\my_program.cpp:10:20: error: cannot deduce type of initializer list
because std::initializer_list was not found; include <initializer_list>
auto my_numbers = {1, 2, 3};
^
If I use the former add_definitions-approach, compiling C files fails with
error: invalid argument '-std=c++11' not allowed with 'C/ObjC'
So I am stuck. For normal CMake projects, I use the CXX_FLAGS-approach to set the flag for C++ only.
Any thoughts on how I might solve my problem?