MSBuild - как включить / исключить каталоги? - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь построить решение Visual Studio из командной строки Windows следующим образом:

msbuild solution.sln /t:Build /p:Configuration=Release 

Но мне нужно исключить один каталог из одного из проектов и включить другой.Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

В каталоге проекта добавьте две папки "CppFilesForDebug" и "CppFilesForRelease".

Папка «CppFilesForDebug» содержит «Debug1.cpp, Debug2.cpp, Debug3.cpp», а папка «CppFilesForRelease» содержит «Release1.cpp, Release2.cpp, Release3.cpp».

Затем добавьте оператор в конец файла vcxproj, как красный прямоугольник ниже: enter image description here

Красный прямоугольник означает, что мы собираем и компилируем файлы cpp в папке «CppFileForDebug» при использовании режима отладки. А в режиме выпуска мы компилируем только файлы cpp в папке «CppFilesForRelease» вместо файлов cpp в папке «CppFilesForDebug».

Я тестирую его с проектами C ++ в VS2015 и VS2017, и он работает. Я думаю, что это может хорошо сочетаться с вашей командой "msbuild solution.sln /t:Build /p:Configuration=Release". Пожалуйста, попробуйте, и любая обратная связь будет отличной.

Обновление: Если ваша проблема возникает из-за конфликтов QT, перейдите в меню QT -> Настройки проекта Qt-> MocDirectory-> измените его на

.\GeneratedFiles

Примечание: Дон забыл "." перед \ GenerateFiles. Надеюсь, поможет. Любое обновление вы можете поделиться здесь.

0 голосов
/ 23 января 2019

Используйте это в вашем проекте csproj file:

<Compile Include="Folder1/*" Condition=" '$(Configuration)' == 'Release' " />
<Compile Exclude="Folder2/*" Condition=" '$(Configuration)' == 'Release' " />

Конечно, вы уже настроили свойство Configuration, но вы можете заменить его своим собственным свойством и установить его из командной строки так же, как Configuration.

...