From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Labview PPL building problem when including *.mnu files

For some reason building of a PPL fails, if a VI from the PPL includes a dependency from a second PPL. The second PPL also contains .mnu files. To demonstrate the problem, I have prepared two example projects:

  • Project_1 consists of one VI that uses LabVIEWHTTPClient.lvlib, which is included in project’s dependencies. LabVIEWHTTPClient.lvlib has some .mnu files that cannot be removed, because the library is locked. VI is contained in a library (called project_1.lvlib), which is then build into a PPL.
  • Project_2 uses the previously packed library. It contains a library with a VI that uses the VI from project_1.lvlibp.

Build specifications are the same for both packed libraries. Problem does not occur if options “Exclude dependent packed libraries” and “Exclude dependent shared libraries” are ticked in the build specifications in the second project. However, in this case, the relative path of the dependencies must always be the same.

 

My question would be if there is a way to include all dependent libraries in the build, excluding .mnu files.

0 Kudos
Message 1 of 2
(2,036 Views)

@zigaU wrote:

Build specifications are the same for both packed libraries. Problem does not occur if options “Exclude dependent packed libraries” and “Exclude dependent shared libraries” are ticked in the build specifications in the second project. However, in this case, the relative path of the dependencies must always be the same.

 


Even if you tick these boxes, the relative paths are still fixed. This tickbox controls whether or not the dependent PPLs are copied to the expected relative path when the PPL that you're building is built.

 

E.g. imagine I have A.lvlibp and B.lvlibp, and A requires B.

If my target destination when building A is C:\LabVIEW PPLs\A.lvlibp, and B is located (at build time) at C:\LabVIEW PPLs\B.lvlibp, then they must always remain in the same directory to correctly work (assuming static linking) when the box is ticked.

 

If the box isn't ticked, then I think you can specify a different location to place B.lvlibp, but once there, the relative path must still be fixed.

 

Managing dependencies is much more difficult if you don't tick the box, because you can end up with C.lvlibp, which requires both A.lvlibp and B.lvlibp, and cannot simultaneously satisfy both relative paths. If you place all your PPLs in the same place, it's simple 🙂

 

For a much more detailed discussion of this, you should take a look at Mark Yedinak and Yinhui Chen's presentation at NIWeek 2019 here: Youtube. They go into a lot of detail about how they build and install PPLs in a more complicated directory structure, if you need that kind of thing.


GCentral
Message 2 of 2
(1,995 Views)