if(NOT DEFINED dir) message(FATAL_ERROR "dir not defined") endif() # Analyze 'cpack --help' output for list of available generators: # execute_process(COMMAND ${CMAKE_CPACK_COMMAND} --help RESULT_VARIABLE result OUTPUT_VARIABLE stdout ERROR_VARIABLE stderr WORKING_DIRECTORY ${dir}) string(REPLACE ";" "\\;" stdout "${stdout}") string(REPLACE "\n" "E;" stdout "${stdout}") set(collecting 0) set(generators) foreach(eline ${stdout}) string(REGEX REPLACE "^(.*)E$" "\\1" line "${eline}") if(collecting AND NOT line STREQUAL "") string(REGEX REPLACE "^ ([^ ]+) += (.*)$" "\\1" gen "${line}") string(REGEX REPLACE "^ ([^ ]+) += (.*)$" "\\2" doc "${line}") set(generators ${generators} ${gen}) endif() if(line STREQUAL "Generators") set(collecting 1) endif() endforeach() # Call cpack with -G on each available generator. We do not care if this # succeeds or not. We expect it *not* to succeed if the underlying packaging # tools are not installed on the system... This test is here simply to add # coverage for the various cpack generators, even/especially to test ones # where the tools are not installed. # message(STATUS "CTEST_FULL_OUTPUT (Avoid ctest truncation of output)") message(STATUS "CPack generators='${generators}'") foreach(g ${generators}) message(STATUS "Calling cpack -G ${g}...") execute_process(COMMAND ${CMAKE_CPACK_COMMAND} -G ${g} RESULT_VARIABLE result OUTPUT_VARIABLE stdout ERROR_VARIABLE stderr WORKING_DIRECTORY ${dir}) message(STATUS "result='${result}'") message(STATUS "stdout='${stdout}'") message(STATUS "stderr='${stderr}'") message(STATUS "") endforeach()