The significant issue with MODULEs is that on Windows, the exported
symbols must be dllexported and they are not imported.
In other export macro implementations this is done by defining an
export macro outside of any ifdef which depends on definitions set
on the command line. However, with cmake we already expect the
DEFINE_SYMBOL to be defined, so the regular EXPORT macro can be
used by such plugins.
Since commit c519bb2b (XCode: Also qoute [] as needed to set
build-configurations, 2011-04-05) we escape "[]" conditions for
XCODE_ATTRIBUTE_ settings. However, we need to handle the "variant"
condition with a special case to map it only into the settings for the
matching configuration.
a7ba452 Add the JOIN generator expression.
96ec314 Make it possible for any genex to have arbitrary content at the end.
bd638ee Rename the method determining if a genex accepts arbitrary content.
dc742fe Extract the ProcessArbitraryContent method.
Checking if a byte is 0 before checking it for something else doesn't do
anything useful. Also one can be sure that it can't be anything wanted
if the value was set to 0 immediately before.
Refactor lookup of CMAKE_(EXE|MODULE|SHARED)_LINKER_FLAGS(|_<CONFIG>)
variables to ensure all combinations are handled. Use the helper method
AddConfigVariableFlags to simplify the implementation.
.../Source/cmakewizard.cxx: In member function ‘virtual void cmakewizard::AskUser(const char*, cmCacheManager::CacheIterator&)’:
.../Source/cmakewizard.cxx:31:35: warning: conversion to ‘int’ from ‘long unsigned int’ may alter its value [-Wconversion]
if(!fgets(buffer, sizeof(buffer)-1, stdin))
^
.../Source/cmakewizard.cxx: In member function ‘virtual bool cmakewizard::AskAdvanced()’:
.../Source/cmakewizard.cxx:70:35: warning: conversion to ‘int’ from ‘long unsigned int’ may alter its value [-Wconversion]
if(!fgets(buffer, sizeof(buffer)-1, stdin))
The compiler is (partly) right here: sizeof() returns a size_t, which often is
bigger as as int as it is unsigned long or something similar. Add an explicit
cast to get rid of that warning here, the buffer has a size of 4KiB, so the
value will fit into an int on all sane platforms.
Both <string> and <cmSystemTools.h> include <stdio.h> one or the other way. It
looks like the CMake header adds a define that will cause another part of the
system header to be used, resulting in conflicting definitions.
6489015 Remove an endif() followed by an if() for the same condition.
e7813b1 Add a test for Qt5Automoc
27fb96b Make the QtAutomoc test compile with either Qt 4 or Qt 5
When processing link line entries we check for matches with known naming
patterns for static and shared libraries. Teach this logic to recognize
numerical suffixes after shared library names such as "libfoo.so.1".
Generate the default AssemblerListingLocation through the flag map so
that it can be overridden by a user /Fa flag. Also teach the VS 7-9
generators to map /Fa to AssemblerListingLocation.
While at it, fix the AssemblerListingLocation default value to have a
trailing slash after the configuration name. This ensures it will be
treated as a directory and not a file name.
This allows for example, the buildsystem to use names like 'boost_any'
instead of the overly generic 'any', and still be able to generate
IMPORTED targets called 'boost::any'.
Teach CMakeParseImplicitLinkInfo to convert the CMAKE_LINKER file name
to a regular expression that matches only the original name. Escape
special characters like '+' so they are not treated as regex syntax.
Extend the ImplicitLinkInfoTest to test handling of a CMAKE_LINKER value
with many special characters.