LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Building PPLs for multiple platforms

Has anyone attempted an architecture with a heirarchy of PPLs and with minimal pain built them all for different platforms? I've got a a distributed DAQ & Automation framework I've written and each component is currently written to statically link dependencies by directly referencing source VIs from LVLIBs. I'd like to move to PPLs and then dependent libraries will be changed to reference LVLIBPs of dependencies so I can utilize a plugin architecture within my test systems. When writing apps from source LVLIBs everything works as expected when building VxWorks apps, PC apps, or linux-rt apps. PPLs are limited to specific platforms though. To make things more interesting, LabVIEW forces cRIO target builds into additional subfolders as well which sometimes PPL referencing gets automatically resolved, sometimes the dependencies show up as missing when opening a project for a different platform.

 

My current attempt to minimize some of these pains is the following disk structure:

heirarchy.png

 

Where all the bare LVLIBs and a project for each platform (pc, vxworks, linux-rt) live and then the sibling platform folders have their own build output folders and a symlink back to the source folder. This lets me open shared source from within the platform specific files but it's not actually a copy of the source and build outputs are always relative up an extra level back into the platform specific build folders. The other possibility I see is to not utilize the different platform folders and symlinking and just tear down the build folder when switching to a different platform, which then means having to rebuild the entire heirarchy.

 

The annoying thing for crio targets is that they then add c/ni-rt/startup into the output path as well. Is there any reason why I shouldn't can't just leave the build artifacts in the root of the build folder?

 

Eventually the goal is to move this system into a Jenkins CI server which would afford a few more options for keeping the platform PPLs isolated and intact during build sequences or updates but I'd prefer to come up with a system that works with minimal pain on a dev machine while I'm prototyping new features as well. I'm thinking the symlinking may be it.

Message 1 of 2
(2,466 Views)

If you ever figure this out let me know. Also looking for this solution.

0 Kudos
Message 2 of 2
(2,238 Views)