Autogen: Do not use per-config file suffixes with VS yet

The change in commit v3.9.0-rc1~42^2~1 (Autogen: Per-config file
suffixes, 2017-05-15) broke Visual Studio builds because the generators
do not yet fully support per-config sources.  Disable the behavior on
Visual Studio generators for now.

Fixes: #16939
This commit is contained in:
Brad King
2017-06-06 09:09:41 -04:00
parent d025faf436
commit cc1b513df1
4 changed files with 4 additions and 19 deletions

View File

@@ -72,9 +72,6 @@ Included ``moc_*.cpp`` and ``*.moc`` files will be generated in the
automatically added to the target's :prop_tgt:`INCLUDE_DIRECTORIES`. automatically added to the target's :prop_tgt:`INCLUDE_DIRECTORIES`.
(This differs from CMake 3.7 and below; see their documentation for details.) (This differs from CMake 3.7 and below; see their documentation for details.)
* For multi configuration generators, except Xcode, the include directory is
``<AUTOGEN_BUILD_DIR>/include_<CONFIG>``.
* See :prop_tgt:`AUTOGEN_BUILD_DIR`. * See :prop_tgt:`AUTOGEN_BUILD_DIR`.
Not included ``moc_<basename>.cpp`` files will be generated in custom Not included ``moc_<basename>.cpp`` files will be generated in custom
@@ -82,9 +79,6 @@ folders to avoid name collisions and included in a separate
``<AUTOGEN_BUILD_DIR>/mocs_compilation.cpp`` file which is compiled ``<AUTOGEN_BUILD_DIR>/mocs_compilation.cpp`` file which is compiled
into the target. into the target.
* For multi configuration generators, except Xcode, the file is
``<AUTOGEN_BUILD_DIR>/mocs_compilation_<CONFIG>.cpp``.
* See :prop_tgt:`AUTOGEN_BUILD_DIR`. * See :prop_tgt:`AUTOGEN_BUILD_DIR`.
The ``moc`` command line will consume the :prop_tgt:`COMPILE_DEFINITIONS` and The ``moc`` command line will consume the :prop_tgt:`COMPILE_DEFINITIONS` and
@@ -123,9 +117,6 @@ The generated generated ``ui_*.h`` files are placed in the
automatically added to the target's :prop_tgt:`INCLUDE_DIRECTORIES`. automatically added to the target's :prop_tgt:`INCLUDE_DIRECTORIES`.
(This differs from CMake 3.7 and below; see their documentation for details.) (This differs from CMake 3.7 and below; see their documentation for details.)
* For multi configuration generators, except Xcode, the include directory is
``<AUTOGEN_BUILD_DIR>/include_<CONFIG>``.
* See :prop_tgt:`AUTOGEN_BUILD_DIR`. * See :prop_tgt:`AUTOGEN_BUILD_DIR`.
The :prop_tgt:`AUTOUIC` target property may be pre-set for all following The :prop_tgt:`AUTOUIC` target property may be pre-set for all following

View File

@@ -20,9 +20,6 @@ source files at build time and invoke moc accordingly.
This allows the compiler to find the included ``moc_<basename>.cpp`` file This allows the compiler to find the included ``moc_<basename>.cpp`` file
regardless of the location the original source. regardless of the location the original source.
* For multi configuration generators, except Xcode, the include directory is
``<AUTOGEN_BUILD_DIR>/include_<CONFIG>``.
* See :prop_tgt:`AUTOGEN_BUILD_DIR`. * See :prop_tgt:`AUTOGEN_BUILD_DIR`.
* If an ``#include`` statement like ``#include "<basename>.moc"`` is found, * If an ``#include`` statement like ``#include "<basename>.moc"`` is found,
@@ -36,10 +33,6 @@ source files at build time and invoke moc accordingly.
``<AUTOGEN_BUILD_DIR>/mocs_compilation.cpp`` file, ``<AUTOGEN_BUILD_DIR>/mocs_compilation.cpp`` file,
which is compiled as part of the target. which is compiled as part of the target.
* For multi configuration generators, except Xcode, the file names are
``moc_<basename>_<CONFIG>.cpp`` and
``<AUTOGEN_BUILD_DIR>/mocs_compilation_<CONFIG>.cpp``.
* The custom directories with checksum * The custom directories with checksum
based names help to avoid name collisions for moc files with the same based names help to avoid name collisions for moc files with the same
``<basename>``. ``<basename>``.

View File

@@ -17,9 +17,6 @@ optional :prop_tgt:`AUTOUIC_SEARCH_PATHS` of the target.
``<AUTOGEN_BUILD_DIR>/include``, ``<AUTOGEN_BUILD_DIR>/include``,
which is automatically added to the target's :prop_tgt:`INCLUDE_DIRECTORIES`. which is automatically added to the target's :prop_tgt:`INCLUDE_DIRECTORIES`.
* For multi configuration generators, except Xcode, the include directory is
``<AUTOGEN_BUILD_DIR>/include_<CONFIG>``.
* See :prop_tgt:`AUTOGEN_BUILD_DIR`. * See :prop_tgt:`AUTOGEN_BUILD_DIR`.
This property is initialized by the value of the :variable:`CMAKE_AUTOUIC` This property is initialized by the value of the :variable:`CMAKE_AUTOUIC`

View File

@@ -162,6 +162,10 @@ static bool IsMultiConfig(cmGlobalGenerator* globalGen)
if (globalGen->GetName().find("Xcode") != std::string::npos) { if (globalGen->GetName().find("Xcode") != std::string::npos) {
return false; return false;
} }
// FIXME: Visual Studio does not fully support per-config sources yet.
if (globalGen->GetName().find("Visual Studio") != std::string::npos) {
return false;
}
return globalGen->IsMultiConfig(); return globalGen->IsMultiConfig();
} }