c++ - Are there noteworthy uses of m4 besides autoconf? -


does know of uses of m4 besides autoconf (preferably in c or c++ environment) more academic excerise, because helped solve problem otherwise (for example 'standard' preprocessor) have been difficult solve.

i ask because thinking way project in c++ want reduce or minimize redundancies using scripts, preprocessors, whatevers.

i have once used m4 generate c++ header file text file containing simple version string (major.minor.micro-status), , information subversion, windows visual studio project.

m4 smallest macro engine embed , use specific goal.

it looked this:

#ifndef __version_h__ #define __version_h__ divert(-1) define(`cpp_define', `#define $1 $2') define(`version', include(`version.txt')) define(`my_software_major', regexp(version, `\([0-9]+\)\.[0-9]+\.[0-9]+', `\1')) define(`my_software_minor', regexp(version, `[0-9]+\.\([0-9]\)+\.[0-9]+', `\1')) define(`my_software_micro', regexp(version, `[0-9]+\.[0-9]+\.\([0-9]\)+', `\1')) define(`my_software_status', regexp(version, `\(-\w+\)', `\1')) define(`svn_rev', `regexp(esyscmd(svnversion -n), `[0-9]+', `\&')') ifelse(len(svn_rev), 0, `define(`no_svn')') divert cpp_define(my_software_version, format(`"%s.%s.%s"', my_software_major, my_software_minor, my_software_micro)) cpp_define(product_version, format(`"%s.%s.%s%s"', my_software_major, my_software_minor, my_software_micro, my_software_status)) cpp_define(copyright_notice, `"copyright (c) 2008 - me"') ifdef(`no_svn', ` cpp_define(about_version, format(`"my software version %s.%s.%s%s"', my_software_major, my_software_minor, my_software_micro, my_software_status)) cpp_define(file_version, format(`"%s.%s.%s"', my_software_major, my_software_minor, my_software_micro)) cpp_define(info_version, format(``%s,%s,%s,0'', my_software_major, my_software_minor, my_software_micro)) ', ` cpp_define(about_version, format(`"my software version %s.%s.%s.%s%s"', my_software_major, my_software_minor, my_software_micro, svn_rev, my_software_status)) cpp_define(file_version, format(`"%s.%s.%s.%s"', my_software_major, my_software_minor, my_software_micro, svn_rev)) cpp_define(info_version, format(``%s,%s,%s,%s'', my_software_major, my_software_minor, my_software_micro, svn_rev)) ') #endif /* __version_h__ */ 

although worked perfectly, experiment did not reiterate, because prefer using cmake's builtin capabilities handle stuff directly , generate visual studio project files.


Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -