separate_arguments (out UNIX_COMMAND PROGRAM "xx a b c") if (out) message (SEND_ERROR "unexpected result with nonexistent program") endif() get_filename_component(cmake_command "${CMAKE_COMMAND}" ABSOLUTE) cmake_path (GET cmake_command FILENAME cmake_exe) cmake_path (GET cmake_command PARENT_PATH cmake_dir) set (ENV{PATH} "${cmake_dir}") separate_arguments (out UNIX_COMMAND PROGRAM "${cmake_exe}") list (LENGTH out length) if (length EQUAL 0) message(FATAL_ERROR "existent program not found") endif() if (NOT length EQUAL 2) message(FATAL_ERROR "unexpected arguments") endif() list(GET out 0 cmake) list(GET out 1 args) if (NOT cmake STREQUAL "${cmake_dir}/${cmake_exe}") message (SEND_ERROR "bad path for program: '${cmake}' instead of '${cmake_dir}/${cmake_exe}'") endif() if (NOT args STREQUAL "") message (SEND_ERROR "bad value for args: '${args}' instead of ''") endif() separate_arguments (out UNIX_COMMAND PROGRAM "${cmake_exe} a b c") list (LENGTH out length) if (length EQUAL 0) message(FATAL_ERROR "existent program not found") endif() if (NOT length EQUAL 2) message(FATAL_ERROR "unexpected arguments") endif() list(GET out 0 cmake) list(GET out 1 args) if (NOT cmake STREQUAL "${cmake_dir}/${cmake_exe}") message (SEND_ERROR "bad path for program: '${cmake}' instead of '${cmake_dir}/${cmake_exe}'") endif() if (NOT args STREQUAL " a b c") message (SEND_ERROR "bad value for args: '${args}' instead of ' a b c'") endif()