Вместо удаления просто сделайте инверсию. Создайте новый словарь из старого, содержащего только элементы, которыми Вы интересуетесь.
public Dictionary<T, U> NewDictionaryFiltered<T, U>
(
Dictionary<T, U> source,
Func<T, U, bool> filter
)
{
return source
.Where(x => filter(x.Key, x.Value))
.ToDictionary(x => x.Key, x => x.Value);
}
Я не уверен, что понимаю вопрос. Вы используете его точно так же, как и любую другую систему сборки. Просто укажите «Visual Studio 8 2005» (немного странно, но вы можете получить список всех поддерживаемых систем, вызвав cmake без параметров), и вы получите решение, которое можно построить в командной строке либо с помощью devenv .exe / build
или с MSBuild.
Единственное, что немного усложняет, - это если вы хотите сгенерировать решение, когда Visual Studio не установлена, например, на сервере сборки. Вы, конечно, можете просто установить его, но я предпочитаю не устанавливать то, что вам не нужно. В этом случае вам нужно подделать его, чтобы принять MSBuild в качестве командной строки сборки (указав пакетный файл в качестве инструмента сборки в командной строке, который просто переупорядочивает аргументы, чтобы MSBuild их принимал), так что он не начнет скулить о том, как он скучает по Visual Studio (что так безумие, поскольку люди CMake из мира командной строки ...)
О, и если вы действительно хотите просто создать существующее решение Visual Studio в командной строке, вам не нужен CMake. Просто вызовите MSBuild или devenv /build[1142077 visible.
CMake можно запустить из командной строки. Вы можете запустить.
cmake.exe -G"Visual Studio 8 2005" -H<source_dir> -B<build_dir>
Ниже приведен фрагмент исходных результатов использования командной строки. Обратите внимание, что параметры -H и -B здесь не описаны. Но их можно использовать для явного определения каталогов исходного кода и сборки в командной строке.
C:\Program Files (x86)\CMake 2.6\bin>cmake
cmake version 2.6-patch 4
Usage
cmake [options] <path-to-source>
cmake [options] <path-to-existing-build>
Options
-C <initial-cache> = Pre-load a script to populate the cache.
-D <var>:<type>=<value> = Create a cmake cache entry.
-U <globbing_expr> = Remove matching entries from CMake cache.
-G <generator-name> = Specify a makefile generator.
-Wno-dev = Suppress developer warnings.
-Wdev = Enable developer warnings.
-E = CMake command mode.
-i = Run in wizard mode.
-L[A][H] = List non-advanced cached variables.
-N = View mode only.
-P <file> = Process script mode.
Вот доступные генераторы.
Generators
The following generators are available on this platform:
Borland Makefiles = Generates Borland makefiles.
MSYS Makefiles = Generates MSYS makefiles.
MinGW Makefiles = Generates a make file for use with
mingw32-make.
NMake Makefiles = Generates NMake makefiles.
Unix Makefiles = Generates standard UNIX makefiles.
Visual Studio 6 = Generates Visual Studio 6 project files.
Visual Studio 7 = Generates Visual Studio .NET 2002 project
files.
Visual Studio 7 .NET 2003 = Generates Visual Studio .NET 2003 project
files.
Visual Studio 8 2005 = Generates Visual Studio .NET 2005 project
files.
Visual Studio 8 2005 Win64 = Generates Visual Studio .NET 2005 Win64
project files.
Visual Studio 9 2008 = Generates Visual Studio 9 2008 project files.
Visual Studio 9 2008 Win64 = Generates Visual Studio 9 2008 Win64 project
files.
Watcom WMake = Generates Watcom WMake makefiles.
CodeBlocks - MinGW Makefiles= Generates CodeBlocks project files.
CodeBlocks - Unix Makefiles = Generates CodeBlocks project files.
Eclipse CDT4 - MinGW Makefiles
= Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - NMake Makefiles
= Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - Unix Makefiles
= Generates Eclipse CDT 4.0 project files.