On 1/25/2012 9:06 AM, Phil Smith wrote:
Just to be clear: that doesn't mean CMake is right -- it's not passing all
> the arguments it should. How to move this forward?
IMO the change to CMake that exposed this was correct. The ARG1 has always been a literal string placed in command shells after the compiler command. This is how it was treated everywhere except in the compiler id detection, which uses execute_process instead of a command shell to run the compiler. That was a bug because it was not running the compiler during identification in the same way that it runs the compiler in the generated build system. The change in question fixed that bug by separating the arguments like they would be in the generated command lines. The only remaining possible fix to that is to do a better job of separating the arguments like a shell would by honoring quoted arguments with spaces, but that would not make a difference in your case because there are no quotes inside the argument value itself (only quotes in the CMake language syntax). In your case, the code SET(CMAKE_C_COMPILER "regina.exe" "cc.rex dcc.exe") tells CMake to generate command lines in the build system like regina.exe cc.rex dcc.exe ... because the second argument is placed literally on the command line. Prior to the change in question CMake was doing this most of the time but not during compiler identification. Now it is fixed. It's unfortunate that the bug fix to CMake exposed this bug in your project, but that is something you'll have to fix in your project. We've also provided other approaches elsewhere in this thread to avoid the problem altogether by setting up your toolchain file to skip compiler id detection. I consider this matter closed. -Brad -- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake
