Monthly Archives: July 2007

compiling windows apps on linux

now that we successfully used cmake to compile a linux app (in the last article), we will now try and compile it for windows.

I am doing this on Gentoo linux, so your mileage may vary if you used a different distribution.

I am starting with http://gentoo-wiki.com/HOWTO_MinGW as a rough guide.

  • # emerge -va sys-devel/crossdev
  • # echo ‘PORTDIR_OVERLAY=”/usr/i686-mingw32/usr/portage /usr/local/portage $PORTDIR_OVERLAY”‘ >> /etc/make.conf
  • create the directory /usr/i686-mingw32/usr/portage
  • install the toolchain: # crossdev i686-mingw32

With Ubuntu/Debian you can simply install it using apt: “apt-get install mingw32”. This will install the toolchain as i586-mingw32msvc-gcc to /usr/bin/ .emerge the packages you want to have as cross compiled programs or libraries.

Once you have installed ming32, it is easy to compile for linux:

#  i686-mingw32-gcc helloworld.cpp -o wintest.exe

Now the next step in the puxxle is to get cmake to compile for both OSes  each time make is run.

Leave a comment

Filed under C++, CDT, cmake, gentoo, linux, windows

Cross platform development with the Eclipse CDT

So, you want to create an application that can un under both Linux and Windows?

This is my experiment trying to do just that… Lets see if the Eclipse CDT is robust to do cross platform development!

Step 1: Install the Eclipse 3.3 SDK if you have not already done so. Make sure to get the CDT components. If you download the java sdk, you can add the CDT packages by adding the following plugin update site: http://download.eclipse.org/tools/cdt/releases/europa

Step 2: Install the cross platform make system, cmake. it’s eclipse download site is:
http://cmakeed.sourceforge.net/updates/

Step 3: Create a C++ project in eclipse.

  • Go to “New->C++ Project” Menu (or Go to “New->Hello World C++ Project” Menu if you are making an empty project and want to see some c++ code used by default)
  • Select the MakeFile Project type, choose Other Toolchain and click Next
  • Select the Advanced Settings Button
  • Uncheck the Use Default Build Command
  • Insert the following in the Build Command Text Field: make -C ${project_loc}/Build VERBOSE=1
  • Under the “C/C++ Build” options, select “Settings”.
  • In the Right Side pane select the binary format for your system (Elf for linux).
  • Click on the OK Button.
  • Create a file in the project root named: CMakeLists.txt [todo: what are the contents of this file???]
  • Open a terminal window
  • cd to your project directory
  • Create a build directory: mkdir Build
  • Change directory to the Build dir: cd Build
  • Run the command: ccmake ../
  • Follow the ccmake instructions. when done, your project is ready.
  • Refresh the eclipse project to show the new build directory.

Step 4: Create an eclipse run menu for cmake:

  • Select the “Run->External Tools->Show External Tools Dialog…” menu.
  • Create a new “Program” and call it Cmake.
  • In the “Location” text field, type the absolute path to cmake (i.e /usr/local/bin/cmake or whatever path your system uses).
  • In the “Working Directory” test field insert the following: “${project_loc}/Build” and in the Arguments section insert the following: “../”.
  • In the “Refresh” tab select The project containing the selected resources.
  • In the “Common” tab check the “External Tools” selection.
  • This will put a shortcut in the “Run” menu for you.
  • Click the Apply Button and then run.
  • CMake will now run on your project directory.

Step 5. Build the project using the command “Run -> External Tools -> cmake”

Next Up: Getting the project to generate both a windows exe and a linux executable.

see also: http://paraview.org/Wiki/CMake:Eclipse

3 Comments

Filed under C++, CDT, cmake, Eclipse, linux, windows

Installing eclipse 3.3 on Gentoo

Today was the day to get eclipse going on Gentoo. I downloaded the latest version (3.3) and dropped it into /opt/eclipse.

I fired it up and got:

# ./eclipse
* run-java-tool is not available for sun-jdk-1.6 on i686
* IMPORTANT: some Java tools are not available on some VMs on some architectures

so, clearly it did not like my java.

I know my java is good:

# java-config -L
The following VMs are available for generation-2:
1) Blackdown JDK 1.4.2.03 [blackdown-jdk-1.4.2]
2) Sun JDK 1.4.2.13 [sun-jdk-1.4]
3) Sun JDK 1.5.0.10 [sun-jdk-1.5]
*) Sun JDK 1.6.0 [sun-jdk-1.6]

Looking around, I found the following:

Java on Gentoo uses /usr/bin/run-java-tool instead of /usr/bin/java (which links to run-java-tool)

the trick is to edit /usr/bin/run-java-tool

after:

tool=$(basename $0)

add

[[ $tool = “run-java-tool” ]] && tool=”java”

then eclipse started perfectly.

5 Comments

Filed under Eclipse, gentoo, Java, linux

Getting ready for eclipse on Gentoo

Getting ready for eclipse 3.3 on Gentoo, I first need to get my system configured to use a more recent version of Java instead of the default 1.4.

Here is a site dedicated to gentoo java: http://www.gentoo.org/proj/en/java/

the first thing to do is emerge java


get rid of old versions
# emerge -C java-config
add the newest
# emerge -uND java-config

to see what versions are installed, do:

# java-config --list-available-vms
The following VMs are available for generation-2:
1) Blackdown JDK 1.4.2.03 [blackdown-jdk-1.4.2]
2) Blackdown JRE 1.4.2.03 [blackdown-jre-1.4.2]
3) Blackdown 32bit JRE 1.4.2.03 [emul-linux-x86-java-1.4.2]
4) Sun 32bit JRE 1.5.0.08 [emul-linux-x86-java-1.5]
5) Kaffe 1.1.7 [kaffe]
*) Sun JDK 1.5.0.08 [sun-jdk-1.5]

to change the jvm, do:

(By handle (preferred))
# java-config --set-system-vm blackdown-jdk-1.4
Now using blackdown-jdk-1.4 as your generation-2 system JVM
(By number)
# java-config --set-system-vm 6
Now using sun-jdk-1.5 as your generation-2 system JVM

Leave a comment

Filed under Eclipse, gentoo, linux

moving to linux

Well, I finally made the decision to move to Linux from Windows XP.

I have decided upon using Gentoo as my platform of choice.  Gentoo seems to be the most cutting edge, as it supports installations via compiling everything from source, which gives me the ultimate in flexibility.

The only downside is that it takes a long time to get stuff installed.

More soon…

Leave a comment

Filed under gentoo, linux