On Mon, Nov 18, 2013 at 12:37 PM, Bert Huijben <b...@qqmail.nl> wrote:
> 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: > I don't doubt it, but just for fun: Exactly which generator/studio version were you using, in case I have a problem reproducing? > 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. > We do that two, though with a little indirection: #define LONG_NAME_STR APR_STRINGIFY(LONG_NAME) #define BIN_NAME_STR APR_STRINGIFY(BIN_NAME) VALUE "FileDescription", LONG_NAME_STR "\0" VALUE "FileVersion", AP_SERVER_BASEREVISION "\0" VALUE "InternalName", BIN_NAME_STR "\0" VALUE "LegalCopyright", AP_SERVER_COPYRIGHT "\0" VALUE "OriginalFilename", BIN_NAME_STR "\0" I guess the LONG_NAME definition set in CMakeLists.txt doesn't need to try to put literal quotes there. > 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 > > > > > -- Born in Roswell... married an alien... http://emptyhammock.com/