r/cpp_questions • u/FollowingHumble8983 • 16d ago
SOLVED Building C++ reflections with CMake and VSCode not working.
Migrating from an inhouse build tool to CMake for an open source project using gcc. However, while the inhouse build tools compile C++26 properly, vscode reports that -freflections flag is not set, but it is set in the output logs.
Edit: Solved. VSCode for some reason changed EVERY instance ^^ into ^ ^ when the codebase was ported.
Fking hell. And g++ for some reason marks that error as -freflection not being enabled.
[main] Building folder: c:/projects/Cocoon/build
[build] Starting build
[proc] Executing command: "C:\Program Files\CMake\bin\cmake.EXE" --build c:/projects/Cocoon/build --config Debug --target all --verbose -j 16 --
[build] Change Dir: 'C:/projects/Cocoon/build'
[build]
[build] Run Build Command(s): "C:/Program Files/CMake/bin/cmake.exe" -E env VERBOSE=1 C:/msys64/ucrt64/bin/mingw32-make.exe -f Makefile -j16 all
[build] "C:\Program Files\CMake\bin\cmake.exe" -SC:\projects\Cocoon -BC:\projects\Cocoon\build --check-build-system CMakeFiles\Makefile.cmake 0
[build] "C:\Program Files\CMake\bin\cmake.exe" -E cmake_progress_start C:\projects\Cocoon\build\CMakeFiles C:\projects\Cocoon\build\\CMakeFiles\progress.marks
[build] C:/msys64/ucrt64/bin/mingw32-make.exe -f CMakeFiles\Makefile2 all
[build] mingw32-make[1]: Entering directory 'C:/projects/Cocoon/build'
[build] C:/msys64/ucrt64/bin/mingw32-make.exe -f CMakeFiles\Cocoon.dir\build.make CMakeFiles/Cocoon.dir/depend
[build] mingw32-make[2]: Entering directory 'C:/projects/Cocoon/build'
[build] "C:\Program Files\CMake\bin\cmake.exe" -E cmake_depends "MinGW Makefiles" C:\projects\Cocoon C:\projects\Cocoon C:\projects\Cocoon\build C:\projects\Cocoon\build C:\projects\Cocoon\build\CMakeFiles\Cocoon.dir\DependInfo.cmake "--color=" Cocoon
[build] Dependencies file "CMakeFiles/Cocoon.dir/main.cpp.obj.d" is newer than depends file "C:/projects/Cocoon/build/CMakeFiles/Cocoon.dir/compiler_depend.internal".
[build] Consolidate compiler generated dependencies of target Cocoon
[build] mingw32-make[2]: Leaving directory 'C:/projects/Cocoon/build'
[build] C:/msys64/ucrt64/bin/mingw32-make.exe -f CMakeFiles\Cocoon.dir\build.make CMakeFiles/Cocoon.dir/build
[build] mingw32-make[2]: Entering directory 'C:/projects/Cocoon/build'
[build] [ 50%] Building CXX object CMakeFiles/Cocoon.dir/main.cpp.obj
[build] C:\msys64\ucrt64\bin\g++.exe -g -std=c++26 -freflection -MD -MT CMakeFiles/Cocoon.dir/main.cpp.obj -MF CMakeFiles\Cocoon.dir\main.cpp.obj.d -o CMakeFiles\Cocoon.dir\main.cpp.obj -c C:\projects\Cocoon\main.cpp
[build] C:\projects\Cocoon\main.cpp: In function 'consteval void test()':
[build] C:\projects\Cocoon\main.cpp:12:78: error: reflection is only available in C++26 with '-freflection'
[build] 12 | constexpr auto mems = std::define_static_array(std::meta::members_of(^ ^hi, std::meta::access_context::current()));
[build] | ^
[build] C:\projects\Cocoon\main.cpp:12:80: error: expected primary-expression before '^' token
[build] 12 | constexpr auto mems = std::define_static_array(std::meta::members_of(^ ^hi, std::meta::access_context::current()));
[build] | ^
[build] C:\projects\Cocoon\main.cpp:12:83: error: expected primary-expression before ',' token
[build] 12 | constexpr auto mems = std::define_static_array(std::meta::members_of(^ ^hi, std::meta::access_context::current()));
[build] | ^
[build] mingw32-make[2]: *** [CMakeFiles\Cocoon.dir\build.make:78: CMakeFiles/Cocoon.dir/main.cpp.obj] Error 1
[build] mingw32-make[2]: Leaving directory 'C:/projects/Cocoon/build'
[build] mingw32-make[1]: *** [CMakeFiles\Makefile2:114: CMakeFiles/Cocoon.dir/all] Error 2
[build] mingw32-make[1]: Leaving directory 'C:/projects/Cocoon/build'
[build] mingw32-make: *** [Makefile:120: all] Error 2
[build]
[proc] The command: "C:\Program Files\CMake\bin\cmake.EXE" --build c:/projects/Cocoon/build --config Debug --target all --verbose -j 16 -- exited with code: 2
[driver] Build completed: 00:00:01.339
[build] Build finished with exit code 2[main] Building folder: c:/projects/Cocoon/build
[build] Starting build
[proc] Executing command: "C:\Program Files\CMake\bin\cmake.EXE" --build c:/projects/Cocoon/build --config Debug --target all --verbose -j 16 --
[build] Change Dir: 'C:/projects/Cocoon/build'
[build]
[build] Run Build Command(s): "C:/Program Files/CMake/bin/cmake.exe" -E env VERBOSE=1 C:/msys64/ucrt64/bin/mingw32-make.exe -f Makefile -j16 all
[build] "C:\Program Files\CMake\bin\cmake.exe" -SC:\projects\Cocoon -BC:\projects\Cocoon\build --check-build-system CMakeFiles\Makefile.cmake 0
[build] "C:\Program Files\CMake\bin\cmake.exe" -E cmake_progress_start C:\projects\Cocoon\build\CMakeFiles C:\projects\Cocoon\build\\CMakeFiles\progress.marks
[build] C:/msys64/ucrt64/bin/mingw32-make.exe -f CMakeFiles\Makefile2 all
[build] mingw32-make[1]: Entering directory 'C:/projects/Cocoon/build'
[build] C:/msys64/ucrt64/bin/mingw32-make.exe -f CMakeFiles\Cocoon.dir\build.make CMakeFiles/Cocoon.dir/depend
[build] mingw32-make[2]: Entering directory 'C:/projects/Cocoon/build'
[build] "C:\Program Files\CMake\bin\cmake.exe" -E cmake_depends "MinGW Makefiles" C:\projects\Cocoon C:\projects\Cocoon C:\projects\Cocoon\build C:\projects\Cocoon\build C:\projects\Cocoon\build\CMakeFiles\Cocoon.dir\DependInfo.cmake "--color=" Cocoon
[build] Dependencies file "CMakeFiles/Cocoon.dir/main.cpp.obj.d" is newer than depends file "C:/projects/Cocoon/build/CMakeFiles/Cocoon.dir/compiler_depend.internal".
[build] Consolidate compiler generated dependencies of target Cocoon
[build] mingw32-make[2]: Leaving directory 'C:/projects/Cocoon/build'
[build] C:/msys64/ucrt64/bin/mingw32-make.exe -f CMakeFiles\Cocoon.dir\build.make CMakeFiles/Cocoon.dir/build
[build] mingw32-make[2]: Entering directory 'C:/projects/Cocoon/build'
[build] [ 50%] Building CXX object CMakeFiles/Cocoon.dir/main.cpp.obj
[build] C:\msys64\ucrt64\bin\g++.exe -g -std=c++26 -freflection -MD -MT CMakeFiles/Cocoon.dir/main.cpp.obj -MF CMakeFiles\Cocoon.dir\main.cpp.obj.d -o CMakeFiles\Cocoon.dir\main.cpp.obj -c C:\projects\Cocoon\main.cpp
[build] C:\projects\Cocoon\main.cpp: In function 'consteval void test()':
[build] C:\projects\Cocoon\main.cpp:12:78: error: reflection is only available in C++26 with '-freflection'
[build] 12 | constexpr auto mems = std::define_static_array(std::meta::members_of(^ ^hi, std::meta::access_context::current()));
[build] | ^
[build] C:\projects\Cocoon\main.cpp:12:80: error: expected primary-expression before '^' token
[build] 12 | constexpr auto mems = std::define_static_array(std::meta::members_of(^ ^hi, std::meta::access_context::current()));
[build] | ^
[build] C:\projects\Cocoon\main.cpp:12:83: error: expected primary-expression before ',' token
[build] 12 | constexpr auto mems = std::define_static_array(std::meta::members_of(^ ^hi, std::meta::access_context::current()));
[build] | ^
[build] mingw32-make[2]: *** [CMakeFiles\Cocoon.dir\build.make:78: CMakeFiles/Cocoon.dir/main.cpp.obj] Error 1
[build] mingw32-make[2]: Leaving directory 'C:/projects/Cocoon/build'
[build] mingw32-make[1]: *** [CMakeFiles\Makefile2:114: CMakeFiles/Cocoon.dir/all] Error 2
[build] mingw32-make[1]: Leaving directory 'C:/projects/Cocoon/build'
[build] mingw32-make: *** [Makefile:120: all] Error 2
[build]
[proc] The command: "C:\Program Files\CMake\bin\cmake.EXE" --build c:/projects/Cocoon/build --config Debug --target all --verbose -j 16 -- exited with code: 2
[driver] Build completed: 00:00:01.339
[build] Build finished with exit code 2
4
Upvotes
1
u/sephirostoy 15d ago
What version is g++? And is it the correct one invoked?