В моих сборках мне необходимо обеспечить определенный промежуточный каталог. Теперь я заметил, что для создания файла .vcxproj используется другой промежуточный каталог, чем для создания того же проекта как части файла .sln: фактически, в первом случае имя файла проекта добавляется в качестве дополнительный уровень, а последний - нет.
При отладке я обнаружил, что промежуточные каталоги различаются между файлами .vcxproj в папке .sln ( к которым добавлено имя проекта) и файлы .vcxproj в других местах (которые этого не делают).
Почему это так, где это задокументировано и как я могу это настроить для оставаться постоянным?
В документации, которую я нашел, говорится, что
$(IntDir): путь к каталогу, указанному для промежуточных файлов. Если это относительный путь, промежуточные файлы переходят по этому пути, добавленному к каталогу проекта.
Я предполагаю, что «проект каталог" — это $(ProjectDir), который не различается между сборками, поэтому у меня нет объяснения, почему $(IntDir) различается.
Вот MWE чтобы воспроизвести проблему:
Project.vcxproj
{00000000-0000-0000-0000-000000000001}
Debug
x64
v143
Sub\Project.vcxproj
{00000000-0000-0000-0000-000000000002}
Debug
x64
v143
Solution.sln
Microsoft Visual Studio Solution File, Format Version 12.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RootProject", "Project.vcxproj", "{00000000-0000-0000-0000-000000000001}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SubProject", "Sub\Project.vcxproj", "{00000000-0000-0000-0000-000000000002}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{00000000-0000-0000-0000-000000000001}.Debug|x64.ActiveCfg = Debug|x64
{00000000-0000-0000-0000-000000000001}.Debug|x64.Build.0 = Debug|x64
{00000000-0000-0000-0000-000000000002}.Debug|x64.ActiveCfg = Debug|x64
{00000000-0000-0000-0000-000000000002}.Debug|x64.Build.0 = Debug|x64
EndGlobalSection
EndGlobal
Build.bat
@echo off
pushd "%~dp0"
if "%VSCMD_VER%" == "" (
call "%VS2022INSTALLDIR%\Common7\Tools\VsDevCmd.bat" -arch=amd64
)
set CMD=MSBuild.exe -v:diag -property:Configuration=Debug -property:Platform=x64
set GREP=findstr /b /c:"IntDir ="
%CMD% Solution.sln -target:RootProject | %GREP%
%CMD% Solution.sln -target:SubProject | %GREP%
%CMD% Project.vcxproj | %GREP%
%CMD% Sub\Project.vcxproj | %GREP%
Вывод
IntDir = Project\x64\Debug\
IntDir = x64\Debug\
IntDir = Project\x64\Debug\
IntDir = Project\x64\Debug\
dir *.lastbuildstate /s/b (ожидаем два файла, находим три)
.\Project\x64\Debug\Project.tlog\Project.lastbuildstate
.\Sub\Project\x64\Debug\Project.tlog\Project.lastbuildstate
.\Sub\x64\Debug\Project.tlog\Project.lastbuildstate
Подробнее здесь: https://stackoverflow.com/questions/791 ... -intermedi
Почему имя файла проекта (только) иногда добавляется к промежуточному каталогу MSBuild? ⇐ C++
Программы на C++. Форум разработчиков
1732001025
Anonymous
В моих сборках мне необходимо обеспечить определенный промежуточный каталог. Теперь я заметил, что для создания файла .vcxproj используется другой промежуточный каталог, чем для создания того же проекта как части файла .sln: фактически, в первом случае имя файла проекта добавляется в качестве дополнительный уровень, а последний - нет.
При отладке я обнаружил, что промежуточные каталоги различаются между файлами .vcxproj в папке .sln ( к которым добавлено имя проекта) и файлы .vcxproj в других местах (которые этого не делают).
Почему это так, где это задокументировано и как я могу это настроить для оставаться постоянным?
В документации, которую я нашел, говорится, что
$(IntDir): путь к каталогу, указанному для промежуточных файлов. Если это относительный путь, промежуточные файлы переходят по [b]этому пути, добавленному к каталогу проекта[/b].
Я предполагаю, что «проект каталог" — это $(ProjectDir), который не различается между сборками, поэтому у меня нет объяснения, почему $(IntDir) различается.
Вот MWE чтобы воспроизвести проблему:
Project.vcxproj
{00000000-0000-0000-0000-000000000001}
Debug
x64
v143
Sub\Project.vcxproj
{00000000-0000-0000-0000-000000000002}
Debug
x64
v143
Solution.sln
Microsoft Visual Studio Solution File, Format Version 12.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RootProject", "Project.vcxproj", "{00000000-0000-0000-0000-000000000001}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SubProject", "Sub\Project.vcxproj", "{00000000-0000-0000-0000-000000000002}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{00000000-0000-0000-0000-000000000001}.Debug|x64.ActiveCfg = Debug|x64
{00000000-0000-0000-0000-000000000001}.Debug|x64.Build.0 = Debug|x64
{00000000-0000-0000-0000-000000000002}.Debug|x64.ActiveCfg = Debug|x64
{00000000-0000-0000-0000-000000000002}.Debug|x64.Build.0 = Debug|x64
EndGlobalSection
EndGlobal
Build.bat
@echo off
pushd "%~dp0"
if "%VSCMD_VER%" == "" (
call "%VS2022INSTALLDIR%\Common7\Tools\VsDevCmd.bat" -arch=amd64
)
set CMD=MSBuild.exe -v:diag -property:Configuration=Debug -property:Platform=x64
set GREP=findstr /b /c:"IntDir ="
%CMD% Solution.sln -target:RootProject | %GREP%
%CMD% Solution.sln -target:SubProject | %GREP%
%CMD% Project.vcxproj | %GREP%
%CMD% Sub\Project.vcxproj | %GREP%
Вывод
IntDir = Project\x64\Debug\
IntDir = x64\Debug\
IntDir = Project\x64\Debug\
IntDir = Project\x64\Debug\
dir *.lastbuildstate /s/b (ожидаем два файла, находим три)
.\Project\x64\Debug\Project.tlog\Project.lastbuildstate
.\Sub\Project\x64\Debug\Project.tlog\Project.lastbuildstate
.\Sub\x64\Debug\Project.tlog\Project.lastbuildstate
Подробнее здесь: [url]https://stackoverflow.com/questions/79199847/why-is-the-project-file-name-only-sometimes-prepended-to-the-msbuild-intermedi[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия