30997

Eclipse RCP: build.properties for multiple platforms

I'm developing an Eclipse RCP application. The application should run on Windows and Linux.

There are several plugins in this application that contain native artifacts. To contain these artifacts in a binary build (jar), one should specify them in <strong>build.properties</strong> file. Currently I include both Linux and Windows native artifacts in <strong>build.properties</strong> and then in runtime I choose which one to load. However, I don't like this approach as it causes unnecessary files to present in both Linux and Windows builds.

Is there a way to specify target platform in <strong>build.properties</strong>? So that for Linux build it would include Linux artifacts and for Windows build it would include Windows artifacts? Alternatively, is there a way to maintain two copies of <strong>build.properties</strong> - one for Linux build and second for Windows build?

Answer1:

The usual way to do this is to have separate plugins (or plugin fragments) for each platform with a platform filter which restricts when the plugin is available:

For example, in the MANIFEST.MF

Eclipse-PlatformFilter: (& (osgi.ws=cocoa) (osgi.os=macosx) (osgi.arch=x86_64) )

restricts the plugin to only Mac OS X 64 bit, Cocoa.

This is what SWT does. There is a base org.eclipse.swt plugin which doesn't contain any code and then multiple plugin fragments extending that plugin (such as org.eclipse.swt.cocoa.macosx.x86_64). Each fragment contains the SWT code for a platform, all implementing the same classes.

Eclipse only loads the plugin for the current platform so you don't have to do any work choosing what to use.

Recommend

  • Does each object allocate memory for constants?
  • PBXCp error no such file or directory
  • Query a table in different ways or orderings in Cassandra
  • Copy background from one element to another using jQuery not working in firefox
  • Why String.ToString()? [duplicate]
  • Is it ok to submit a build to the app store for testing when a previous build is waiting for review?
  • ObjectMaterialize in EF not firing on first level query
  • How to overcome jar dependency hell when multiple modules use the same jar?
  • Rewrite apply function to use recursion instead
  • How to redirect or show a page rather than “Forbidden” when i have directory listings off (htaccess/
  • Multiple versions of iTunesArtwork in one project?
  • Passing information to server-side function in a Google Docs Add On
  • Is there a way to call library thread-local init/cleanup on thread creation/destruction?
  • runtime error when linking ffmpeg libraries in qt creator
  • Linking Ghostscript to pypdfocr in Windows Platform
  • Javascript/Jquery runs fast in desktop browsers, but slow in mobile/smartphone browsers…should I spl
  • What's the syntax to inherit documentation from another indexer?
  • Ruby on Rails App deployed to heroku showing “We're sorry, but something went wrong”
  • Detecting null parameter in preprocessor macro
  • SyntaxError: (irb):26: both block arg and actual block given
  • Function calls are not supported. Consider replacing the function or lambda with a reference to an e
  • perl, mysql - fasting way to upload a csv file into mysql?
  • How do I display a dialog that asks the user multi-choice questıon using tkInter?
  • pillow imaging ImportError
  • C# program and C++ DLL compiled for 32-bit system crash on 64-bit system
  • Loading .coffee files via a view in Rails
  • Create DicomImage from scratch using Dcmtk
  • How to do unit test for HttpContext.Current.Server.MapPath
  • Scrapy recursive link crawler
  • How to rebase a series of branches?
  • Is there any way to access browser form field suggestions from JavaScript?
  • Timeout for blocking function call, i.e., how to stop waiting for user input after X seconds?
  • jQuery tmpl and DataLink beta
  • jqPlot EnhancedLegendRenderer plugin does not toggle series for Pie charts
  • How do I rollback to a specific git commit
  • Is there a mandatory requirement to switch app.yaml?
  • How does Linux kernel interrupt the application?
  • How can I remove ASP.NET Designer.cs files?
  • Busy indicator not showing up in wpf window [duplicate]
  • How to load view controller without button in storyboard?