Good evening,
I would like to setup a platform specific Visual Studio project file. Right now I am running into a problem on how the PostBuildEvent
would look like on Mac. This is what I have for Windows:
Grasshopper:
<PropertyGroup Condition="$(DefineConstants.Contains('ISWIN'))">
<PostBuildEvent>Copy "$(TargetPath)" "$(TargetDir)$(ProjectName).gha"</PostBuildEvent>
</PropertyGroup>
Rhino:
<PropertyGroup Condition="$(DefineConstants.Contains('ISWIN'))">
<PostBuildEvent>Copy "$(TargetPath)" "$(TargetDir)$(ProjectName).rhp"</PostBuildEvent>
</PropertyGroup>
So on Mac how would that look like?
<PropertyGroup Condition="$(DefineConstants.Contains('ISMAC'))">
<PostBuildEvent>" ... ??? ... "</PostBuildEvent>
</PropertyGroup>
Kindest
Christian
nathanletwory
(Nathan 'jesterKing' Letwory)
May 6, 2022, 5:08pm
2
Perhaps instead of using the PostBuildEvent
to copy files you could instead use the Copy
task? The RhinoCycles project uses this to do cross-platform copying of files.
<ItemGroup>
<LicenseFiles Include="$(ProjectDir)..\cycles\cycles\src\doc\license\*.txt" />
</ItemGroup>
<ItemGroup>
<None Include="Icons\Cycles_material.ico" />
</ItemGroup>
<Target Name="CopyFiles" BeforeTargets="BeforeBuild">
<MakeDir Directories="$(RhinoBinDir)\$(Configuration)\Plug-ins\RhinoCycles\licenses" />
<Copy SourceFiles="@(LicenseFiles)" DestinationFolder="$(RhinoBinDir)\$(Configuration)\Plug-ins\RhinoCycles\licenses" OverwriteReadOnlyFiles="True" />
<Copy SourceFiles="$(ProjectDir)..\cycles\cycles\third_party\cuew\LICENSE" DestinationFiles="$(RhinoBinDir)\$(Configuration)\Plug-ins\RhinoCycles\licenses\cuew.txt" OverwriteReadOnlyFiles="True" />
<Copy SourceFiles="$(ProjectDir)..\cycles\pthreads\COPYING" DestinationFiles="$(RhinoBinDir)\$(Configuration)\Plug-ins\RhinoCycles\licenses\pthreads.txt" OverwriteReadOnlyFiles="True" />
<Delete Files="$(RhinoBinDir)\$(Configuration)\Plug-ins\RhinoCycles\licenses\CMakeLists.txt" />
<Delete Files="$(RhinoBinDir)\$(Configuration)\Plug-ins\RhinoCycles\licenses\OSL.txt" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="AfterBuild">
</Target>
-->
</Project>
Additionally it may be worth using the regular approach to checking for OS using the Condition
checking against $(OS)
.
1 Like
Good one. I did it even easier:
<Target Name="AfterBuild">
<Copy SourceFiles="$(TargetPath)" DestinationFiles="$(TargetDir)\$(ProjectName).rhp" OverwriteReadOnlyFiles="True" />
</Target>
This line works on both platforms.
Thanks
Christian
1 Like