Hi,
As I already mentioned I'm re-scripting my build of httpd to work using the
new cmake generator.
It looks like I have things working now, with about half as many local
patches as before..., but I think one problem I had to patch around will be
common for everybody using project files for Visual Studio 2005 and later:
The very ugly escaping of the LONG_NAME= argument.
E.g. CMakeLists.txt contains:
SET_TARGET_PROPERTIES(${mod_name} PROPERTIES COMPILE_FLAGS
"-DLONG_NAME=\"\\\"${mod_name} for Apache HTTP Server\\\"\"
-DBIN_NAME=${mod_name}.so ${EXTRA_COMPILE_FLAGS}")
The long name value is then later generated in project files, but
differently for the C compiler and the RC (=resource) compiler. This
resource compiler doesn't like the way the value is generated, and just
handles the value literally... And then generates parser errors.
In Subversion where we used this same pattern for years, we avoided all the
'"' escaping problems by using the APR_STRINGIFY() macro. That allows simply
passing the value.
E.g.
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904B0"
BEGIN
VALUE "CompanyName", "http://subversion.apache.org/\0"
VALUE "FileDescription", APR_STRINGIFY(SVN_FILE_DESCRIPTION) "\0"
VALUE "FileVersion", SVN_VER_NUMBER "\0"
VALUE "InternalName", "SVN\0"
VALUE "LegalCopyright", "Copyright (c) The Apache Software
Foundation\0"
VALUE "OriginalFilename", APR_STRINGIFY(SVN_FILE_NAME) "\0"
VALUE "ProductName", "Subversion\0"
VALUE "ProductVersion", SVN_VERSION "\0"
#ifdef SVN_SPECIALBUILD
VALUE "SpecialBuild", SVN_SPECIALBUILD "\0"
#endif
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
I've fixed the problem for me with a local hack, but I think many future
users of the cmake build scripts would be very happy if this problem could
be fixed in the standard scripts.
In my case that would allow me to reduce my own patches, to cmake specific
things. (E.g. I like to have .pdb files even for the fully optimized builds,
and cmake doesn't support that scenario)
Bert