It seems the cmake toolchain file generated by buildroot uses "FORCE" to set the CXX and C flags. However, this can be a problem. The toolchain file is read every run of cmake, so the CXX flags keep growing. This results in a complete rebuild everytime something changes in a CMakeLists.txt. CMake correctly thinks that it must rebuild everything because the CMAKE_CXX_FLAGS must be applied to all which you are compiling. It can be solved by removing the FORCE attribute of the set() command. The same goes for the CMAKE_C_FLAGS.
Thanks for your bug report. Could you share a minimal .config and reproduction scenario (for cmake dummies)? Ccing Samuel Martin...
Created attachment 5522 [details] simple application to use with cmake toolchain Unzip this attachment, and then do this from the directory: cd .. mkdir buildSimpleApp cd buildSimpleApp cmake -DCMAKE_TOOLCHAIN_FILE=<full path to your buildroot compilation>/output/host/usr/share/buildroot/toolchainfile.cmake . ../SimpleApp/ This will work OK and generate makefiles. But if you run it again, you will see the build flags list grow and grow.
Samuel, could you have a look at this maybe?
(In reply to comment #3) > Samuel, could you have a look at this maybe? Yep, don't worry, I'm on it ;-) So far, removing FORCE option in the toolchainfile.cmake.in looks ok, except for cdrkit :-/ I'll investigate this and hopefully post and fix during the rc month. Regards,
Patch series sent by Samuel at http://lists.busybox.net/pipermail/buildroot/2014-August/104293.html.
Bug fixed with commit http://git.buildroot.net/buildroot/commit/?id=47544e43a5e36f6c4ee1acb06315ab974cde78b4 and will be part of 2014.11.