Cmake is really simple but you need to generate  from a specific configuration that shouldnt get information about compilation from the system but from a toolchain :

You have choice change the File generated :  by removing the line include(CMakeDetermineSystem) "it is baaaaad"
or change the printHeader method to take care about the cross compilation in CMakeGenerator, (maybe Igor have already fix this)

self puts: '# This is automatically generated file using ', self configurationName, ' on ',
Date current asString, ' ' , Time current asString;
puts: 'cmake_minimum_required(VERSION 2.6.2)'.
self config requiresDetermineSystem ifTrue: [
self puts: 'include(CMakeDetermineSystem)'.

and add in CPlatformConfig

A method :

Create a WindowConfiguration as you wish and create a method 


OK here your source and CMake infrastructure is correct.
You need a cross compiler i use the mingw32
So you need to create your MyToolchain.cmake, just copy past the following code (change the compiler if needed).

SET(CMAKE_C_COMPILER i386-mingw32-gcc)
SET(CMAKE_CXX_COMPILER i386-mingw32-g++)
SET(CMAKE_RC_COMPILER i386-mingw32-windres)

# It should be everything in VM platform if it is not the case uncomment all this line.
#SET(CMAKE_FIND_ROOT_PATH where you install mingw32)

A generate your source and do : 
cmake -DMAKE_TOOLCHAIN_FILE=MyToolchain.cmake
and make
that should work :

Possible error : 
CMAKE_RC_COMPILER maybe not automatically call, if that happen check the #extraVMSettings: in your configuration and change the
maker cmd: 'add_custom_command' params: 'OUTPUT ', res ,
COMMAND windres --include-dir ${targetPlatform}/misc -D_WIN32 -i ${buildDir}/Cog.rc -o ', res , '
COMMENT "Generating resource file..."
Should be change in :
maker cmd: 'add_custom_command' params: 'OUTPUT ', res ,
COMMAND  i386-mingw32-windres --include-dir ${targetPlatform}/misc -D_WIN32 -i ${buildDir}/Cog.rc -o ', res , '
COMMENT "Generating resource file..."

PS: i have a old version on my repository (JBARepo) under the CMakerVMMaker, but it is completely deprecated  CMakeVMMaker-jb.121.
PPS : I wish update this code but never spend the time
PPPS: I am available on skype if you want to discuss that.

On Dec 12, 2011, at 4:42 PM, Igor Stasenko wrote:

On 12 December 2011 16:33, Mariano Martinez Peck <> wrote:

Hi JB. Could you please tell me how should I run cmake to build for windows? Is there a specific generator?  because if I run:

since you cross-compiling under unix, you use unix makefiles, which is default.
but to generate windows executable, you need different settings in cmake config.
like different compilation target (win32 executable, not ELF) etc.

JB could tell you more :)

cmake --help

at the end the only generators I see are:


The following generators are available on this platform:
  Unix Makefiles              = Generates standard UNIX makefiles.
  Xcode                       = Generate XCode project files.
  CodeBlocks - Unix Makefiles = Generates CodeBlocks project files.
  Eclipse CDT4 - Unix Makefiles
                              = Generates Eclipse CDT 4.0 project files.
  KDevelop3                   = Generates KDevelop 3 project files.
  KDevelop3 - Unix Makefiles  = Generates KDevelop 3 project files.


On Thu, Jul 7, 2011 at 7:07 PM, Jean Baptiste Arnaud <> wrote:

Since the last Igor ( thank ) update it 's possible to cross compile windows VM(last version) from MacOs and Unix.

Using Mingw and cmake.

Now, i do for Cog, and for ARM9 processor.
My process imply to fix some window file cause some include are wrong, then it the cross compiler don't find some include beginning by Uppercase(cause the file isn't beginning by uppercase).
In /Platform/win32/vm/sqWin32Intel.c

#include <float.h> instead  #include <Float.h>

in /Platform/win32/plugin/SocketPlugin/sqWin32NewNet.c

#include <ws2tcpip.h> instead #include <Ws2tcpip.h>

Jean Baptiste Arnaud


Best regards,
Igor Stasenko.

Jean Baptiste Arnaud