[CMake] xmltoman and zip files
Hendrik Sattler
post at hendrik-sattler.de
Tue Mar 25 11:27:08 EDT 2008
Am Dienstag 25 März 2008 schrieb Leopold Palomo-Avellaneda:
> just to questions:
>
> 1) some of you have some rule/macro to work with xmltoman?
> 2) it's a stupid thing, but how can I make a target to compress file?
>
> I would like to work with man pages. The sources are written with xml (as a
> source). And the so, I should do:
>
> xmltoman file.1.xml > file.1
>
> and after, install it with:
>
> gzip -9 file.1
>
>
> Someone have done it before?
I have something for docbook xml files, using xmlto to create HTML and
manpage.
Example:
find_package ( XmlTo REQUIRED )
xmlto ( file.1.xml MODES man html ALL )
Note that the XML file must have manvolnum specified.
I attached it.
HS
-------------- next part --------------
# - Convert XML docBook files to various formats
# This will convert XML docBook files to various formats like:
# man html txt dvi ps pdf
# macro XMLTO(outfiles infiles... MODES modes...)
set ( XmlTo_FOUND false )
find_program ( XMLTO_EXECUTABLE
NAMES xmlto
DOC "path to the xmlto docbook xslt frontend"
)
mark_as_advanced ( XMLTO_EXECUTABLE )
if ( XMLTO_EXECUTABLE )
set ( XmlTo_FOUND true )
endif ( XMLTO_EXECUTABLE )
if ( NOT XmlTo_FIND_QUIETLY )
if ( XmlTo_FIND_REQUIRED )
FATAL_ERROR ( "xmlto not found" )
endif ( XmlTo_FIND_REQUIRED )
endif ( NOT XmlTo_FIND_QUIETLY )
macro ( _XMLTO_FILE outfiles mode)
#special settings
set ( XMLTO_FILEEXT_man 1 )
set ( XMLTO_MODE_html xhtml-nochunks )
if ( NOT XMLTO_MODE_${mode})
set ( XMLTO_MODE_${mode} ${mode} )
endif ( NOT XMLTO_MODE_${mode} )
if ( NOT XMLTO_FILEEXT_${mode} )
set ( XMLTO_FILEEXT_${mode} ${mode} )
endif ( NOT XMLTO_FILEEXT_${mode} )
foreach ( dbFile ${ARGN} )
if ( "${mode}" STREQUAL "man" )
file ( READ "${dbFile}" _DB_FILE_CONTENTS )
string ( REGEX MATCH "<manvolnum>[^<]*" XMLTO_FILEEXT_${mode} "${_DB_FILE_CONTENTS}" )
string ( REGEX REPLACE "^<manvolnum>" "" XMLTO_FILEEXT_${mode} "${XMLTO_FILEEXT_${mode}}" )
string ( REGEX REPLACE "[[:space:]]" "" XMLTO_FILEEXT_${mode} "${XMLTO_FILEEXT_${mode}}" )
endif ( "${mode}" STREQUAL "man" )
get_filename_component ( dbFilePath ${CMAKE_CURRENT_BINARY_DIR}/${dbFile} PATH )
get_filename_component ( dbFileWE ${dbFile} NAME_WE )
get_filename_component ( dbFileAbsWE ${dbFilePath}/${dbFileWE} ABSOLUTE )
add_custom_command (
OUTPUT ${dbFileAbsWE}.${XMLTO_FILEEXT_${mode}}
COMMAND ${XMLTO_EXECUTABLE} ${XMLTO_COMMAND_ARGS} -o ${CMAKE_CURRENT_BINARY_DIR}
${XMLTO_MODE_${mode}} "${CMAKE_CURRENT_SOURCE_DIR}/${dbFile}"
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/${dbFile}
VERBATIM
)
list ( APPEND ${outfiles}
${dbFileAbsWE}.${XMLTO_FILEEXT_${mode}}
)
endforeach ( dbFile )
endmacro ( _XMLTO_FILE outfiles )
macro ( XMLTO )
set ( XMLTO_MODES )
set ( XMLTO_FILES )
set ( XMLTO_HAS_MODES false )
set ( XMLTO_ADD_DEFAULT "" )
foreach ( arg ${ARGN} )
if ( ${arg} STREQUAL "MODES" )
set ( XMLTO_HAS_MODES true )
elseif ( ${arg} STREQUAL "ALL" )
set ( XMLTO_ADD_DEFAULT ALL )
else ( ${arg} STREQUAL "MODES" )
if ( XMLTO_HAS_MODES )
list ( APPEND XMLTO_MODES ${arg} )
else ( XMLTO_HAS_MODES )
list ( APPEND XMLTO_FILES ${arg} )
endif ( XMLTO_HAS_MODES )
endif ( ${arg} STREQUAL "MODES" )
endforeach ( arg ${ARGN} )
if ( NOT XMLTO_MODES )
set ( XMLTO_MODES html )
endif ( NOT XMLTO_MODES )
foreach ( mode ${XMLTO_MODES} )
_xmlto_file ( XMLTO_FILES_${mode} ${mode} ${XMLTO_FILES} )
add_custom_target ( ${mode} ${XMLTO_ADD_DEFAULT}
DEPENDS ${XMLTO_FILES_${mode}}
VERBATIM
)
endforeach ( mode )
set ( XMLTO_MODES )
set ( XMLTO_FILES )
endmacro ( XMLTO )
More information about the CMake
mailing list