Updated cmake-based buildsys to make it work with Windows.
authorunknown <Sputnick@.(none)>
Tue, 10 Jun 2008 12:26:31 +0000 (14:26 +0200)
committerunknown <Sputnick@.(none)>
Tue, 10 Jun 2008 12:26:31 +0000 (14:26 +0200)
This works for me with a static Qt, but YMMV. Updated
README.cmake with build instructions for Windows as well.
App icons will follow after we have merged cmake into trunk.

CMakeLists.txt
README.cmake

index bec08c9..c6659ae 100644 (file)
@@ -4,6 +4,7 @@
 #                    of "core", "client", "mono" or "all".
 # -DQT=/path/to/qt : Choose a Qt4 installation to use instead of the system Qt4
 # -DSTATIC=1       : Enable static building of Quassel, most useful with a static Qt.
 #                    of "core", "client", "mono" or "all".
 # -DQT=/path/to/qt : Choose a Qt4 installation to use instead of the system Qt4
 # -DSTATIC=1       : Enable static building of Quassel, most useful with a static Qt.
+# -DSTATICWIN=1    : Enable static building for Windows.
 # -DSPUTDEV        : Do not use.
 #
 # NOTE: You need to remove CMakeCache.txt if you plan to change any of these values!
 # -DSPUTDEV        : Do not use.
 #
 # NOTE: You need to remove CMakeCache.txt if you plan to change any of these values!
 project(QuasselIRC)
 
 cmake_minimum_required(VERSION 2.4.5)
 project(QuasselIRC)
 
 cmake_minimum_required(VERSION 2.4.5)
+cmake_policy(SET CMP0003 OLD)  # suppress linker warnings
+
+if(STATICWIN)
+  set(CMAKE_BUILD_TYPE Release)
+endif(STATICWIN)
 
 set(QT_MIN_VERSION "4.4.0")
 
 
 set(QT_MIN_VERSION "4.4.0")
 
@@ -99,6 +105,14 @@ if(DEFINED STATIC)
   link_directories(${CMAKE_BINARY_DIR}/staticlibs)
 endif(DEFINED STATIC)
 
   link_directories(${CMAKE_BINARY_DIR}/staticlibs)
 endif(DEFINED STATIC)
 
+if(STATICWIN AND WIN32)
+  link_libraries(imm32 winmm)  # missing by default :/
+endif(STATICWIN AND WIN32)
+
+# FIXME: Add icons for windows as soon as we have merged with trunk (which has reorganized
+#        the icon files):
+#        Simply add the .rc file to the targets
+
 # Here comes the dirty part. Our targets need different Qt4 modules, i.e. different libs
 # and defines. We can't simply include UseQt4 several times, since definitions add up.
 # We workaround this by using our own macro to figure out what to add.
 # Here comes the dirty part. Our targets need different Qt4 modules, i.e. different libs
 # and defines. We can't simply include UseQt4 several times, since definitions add up.
 # We workaround this by using our own macro to figure out what to add.
index 805679d..28a6c39 100644 (file)
@@ -4,7 +4,7 @@ There is no "make distclean"; "make clean" should usually be enough since CMake
 cleans up properly (qmake often didn't). If you really want to get rid of all build files,
 just remove the build directory.
 
 cleans up properly (qmake often didn't). If you really want to get rid of all build files,
 just remove the build directory.
 
-Usually, you should build Quassel as follows:
+Usually, you will build Quassel as follows:
 
 cd /path/to/build/dir
 cmake /path/to/quassel
 
 cd /path/to/build/dir
 cmake /path/to/quassel
@@ -32,3 +32,22 @@ Quassel recognizes the following options:
     Enable static building of Quassel. You should link the static versions of some libs
     (in particular libstdc++.a) into /path/to/build/dir/staticlibs in oder to create
     a portable binary!
     Enable static building of Quassel. You should link the static versions of some libs
     (in particular libstdc++.a) into /path/to/build/dir/staticlibs in oder to create
     a portable binary!
+
+-DSTATICWIN=1
+    Enable static building for Windows platforms. This adds some libs that are not automatically
+    included for some reason.
+
+BUILDING ON WINDOWS:
+--------------------
+We have tested building on Windows with a statically built Qt (with its /bin directory in %PATH%)
+and MSVC 2005/2008. Make sure that you use a "shell" that has all needed env variables setup,
+such as the "Visual Studio Command Prompt". You will also need the /bin of the Microsoft SDK in
+your %PATH% at least for VS 2008, otherwise rc.exe is not found.
+Currently, only building in the shell using nmake seems to work; CMake can also create MSVC project
+files, but they seem to be problematic. However, YMMV.
+
+After you have everything setup:
+
+cd C:\path\to\quassel-build
+cmake -G"NMake Makefiles" C:\path\to\quassel\source -DSTATICWIN=1
+nmake