[CMake] intltool and cmake?

Timothy M. Shead tshead at k-3d.com
Sun Jan 13 23:00:04 EST 2008


On Sun, 2008-01-13 at 12:00 +0100, Christopher Lang wrote:
> Hi,
> 
> I am just converting a mid size autotools project to cmake. It works very 
> nicely so far, but: there are all kinds of files that I need intltool for 
> (.glade files etc.) so gettext alone will not do.
> 
> Is there some example on how to integrate intltool & cmake?

I've enclosed just such an example, from the K-3D "po" directory.
Should be fairly straightforward to adjust to your project.

Cheers,
Tim

-------------- next part --------------
PROJECT(po)

IF(K3D_BUILD_NLS)
	FIND_PROGRAM(K3D_INTLTOOL_UPDATE intltool-update)
	MARK_AS_ADVANCED(K3D_INTLTOOL_UPDATE)

	FIND_PROGRAM(K3D_XGETTEXT xgettext)
	MARK_AS_ADVANCED(K3D_XGETTEXT)

	FIND_PROGRAM(K3D_MSGMERGE msgmerge)
	MARK_AS_ADVANCED(K3D_MSGMERGE)

	FIND_PROGRAM(K3D_MSGFMT msgfmt)
	MARK_AS_ADVANCED(K3D_MSGFMT)

	SET(K3D_CATALOGS
		chef
		)

	SET(K3D_CATALOG_TARGETS
		)

	ADD_CUSTOM_TARGET(nls-update-sources
		${K3D_INTLTOOL_UPDATE} -m
		WORKING_DIRECTORY ${po_SOURCE_DIR}
		)

	ADD_CUSTOM_COMMAND(OUTPUT ${po_BINARY_DIR}/k3d.pot
		COMMAND ${K3D_XGETTEXT} --files-from ${po_SOURCE_DIR}/POTFILES.in --keyword=_ -o ${po_BINARY_DIR}/k3d.pot --copyright-holder="Timothy M. Shead" --msgid-bugs-address="k3d-development at lists.sourceforge.net" --no-wrap --no-location
		DEPENDS POTFILES.in
		WORKING_DIRECTORY ${k3d_SOURCE_DIR}
		)

	FOREACH(catalog ${K3D_CATALOGS})
		ADD_CUSTOM_TARGET(nls-update-${catalog}.po
			${K3D_MSGMERGE} ${catalog} k3d -o ${catalog}.po --no-wrap
			DEPENDS ${po_SOURCE_DIR}/${catalog}.po
			WORKING_DIRECTORY ${po_SOURCE_DIR}
			)

		FILE(MAKE_DIRECTORY "${po_BINARY_DIR}/${catalog}/LC_MESSAGES")

		ADD_CUSTOM_COMMAND(OUTPUT ${po_BINARY_DIR}/${catalog}/LC_MESSAGES/k3d.mo
			COMMAND ${K3D_MSGFMT} -c -o ${po_BINARY_DIR}/${catalog}/LC_MESSAGES/k3d.mo ${po_SOURCE_DIR}/${catalog}.po
			DEPENDS ${po_SOURCE_DIR}/${catalog}.po
			)

		INSTALL(FILES ${po_BINARY_DIR}/${catalog}/LC_MESSAGES/k3d.mo
			DESTINATION share/k3d/locale/${catalog}/LC_MESSAGES
			)

		SET(K3D_CATALOG_TARGETS ${K3D_CATALOG_TARGETS} ${po_BINARY_DIR}/${catalog}/LC_MESSAGES/k3d.mo)
	ENDFOREACH(catalog)

	ADD_CUSTOM_TARGET(nls ALL
		DEPENDS ${po_BINARY_DIR}/k3d.pot ${K3D_CATALOG_TARGETS}
		)

ENDIF(K3D_BUILD_NLS)



More information about the CMake mailing list