[CMake] MSYS EXEC_PROGRAM() or EXECUTE_PROCESS() fails
Brad King
brad.king at kitware.com
Tue Sep 12 16:12:42 EDT 2006
Peter Visser wrote:
> I just "discovered" cmake, I find cmake easy to setup and it works
> fantastic.
> However, a small problem occurs. I'm using: cmake 2.4-patch3 under
> MSYS-1.0.10.
>
> The problem occurs when using EXEC_PROGRAM() or EXECUTE_PROCESS().
> Instead of "sh.exe" from MSYS being used to execute the program
> "cmd.exe" from windows is being used.
> This results in an error if the binary doesn't run under windows
> natively e.g. wx-config. ( e.g. FIND_PACKAGE(wxWidgets) will not work)
> It can be solved by
> Changing:
> EXEC_PROGRAM(wx-config
> ARGS "--cxxflags"
> OUTPUT_VARIABLE wxWidgets_CXX_FLAGS
> RETURN_VALUE RET)
> Into:
> EXEC_PROGRAM(sh
> ARGS "wx-config --cxxflags"
> OUTPUT_VARIABLE wxWidgets_CXX_FLAGS
> RETURN_VALUE RET)
>
> Most likely I'm doing something wrong, is there a switch/macro or
> calling cmake with an argument to solve this?
CMake is a windows program that happens to know how to generate MSYS
makefiles. It does not try to reproduce the native build behavior for
EXEC* commands during processing of CMakeLists.txt code. Windows
programs do not know how to interpret #! lines in scripts they execute.
You'll have to invoke it using the second form. It should work
everywhere anyway.
-Brad
More information about the CMake
mailing list