Huge thanks to our Platinum Members Endace and LiveAction,
and our Silver Member Veeam, for supporting the Wireshark Foundation and project.

Wireshark-dev: Re: [Wireshark-dev] Status Cmake Win32 support

From: Graham Bloice <graham.bloice@xxxxxxxxxxxxx>
Date: Sun, 1 Dec 2013 22:35:50 +0000
On 30 November 2013 23:18, Joerg Mayer <jmayer@xxxxxxxxx> wrote:

>    1. I had to add some MSC version definitions to CMakeLists.txt

There are two independent parts to this patch:

1) I applied the MSC_VER_REQUIRED part (after I understood the cmake specific
   part of it).

2)
-                       set( CMAKE_PREFIX_PATH "${QT5_BASE_PATH}\\msvc2010" )
+#                      set( CMAKE_PREFIX_PATH "${QT5_BASE_PATH}\\msvc2010" )
+                       set( CMAKE_PREFIX_PATH "${QT5_BASE_PATH}" )

I have no idea why/how this is supposed to work: Is Qt5 supposed to automagically
add the right msvc version back into the path?
After applying and testing this it didn't fail right away but it no longer
found Qt5LinguistTools and Qt5PrintSupport.

My qt is in C:\Qt\Qt-5.1.1-MSVC2010-win32-ws, and QT_BASE_DIR is set to this.  I used the Qt-5.1.1-MSVC2010-win32-ws.zip from the Wireshark web site.  I might have used the nmake target "install_qt" to do this, I can't remember.

>    4. As I've moved over to building the GTK3 version, some CMake FindXXX
>    modules had to be fixed, not entirely convinced by my changes here, but it
>    works for me (Findxxx.patch).

I do my builds with GTK3 as well and they seem to build just fine. I agree that
using gtk[23] is a hack and you cleaned that up properly. What I don't understand
is why you removed the "IF( NOT GMODULE2_FOUND  )" (or similar) in
FindGMODULE2.cmake and FindGTHREAD2.cmake.

I've reverted the GMODULE2 and GTHREAD2 changes and GTK3 still builds for me.  I haven't checked GTK2 builds, is there much point on Windows?

I still have the issue with GTK3, in that I have to comment out the path "corrections" in FindGTK3.cmake.
 
My current hit-list of things to do (some you've touched in in your message):

1.  Copy build artifacts (and 3rd party dlls etc.) to a directory for running (as per nmake).  Almost like install.  Note that the exact location of the build artifacts depends on the type of build actually made (debug, release etc.)
2.  Fix the generation of the manifext files (in progress GMB), and include in build (use SED to produce .manifest from .manifest.in), should go into correct intermediate build dir (e.g. wireshark.dir\Release).  Note needs to know processor architecture, so maybe should be a prebuild custom command for each target).
3.  Fix the generation of the .rc files (in progress GMB), and include in build (use SED to produce .rc from .rc.in), should go into correct intermediate build dir (e.g. wireshark.dir\Release).  Note associated .ico and .manifest.
4.  Fix the use of zlib, so that zlib is built by CMake and doesn't require nmake build first.
5.  Fix PortAudio.
6.  Fix CMake to find a working pkg-config.exe (only found in gtk2\bin at the moment, missing from gtk3), currently manualy copied to build dir (along with intl.dll and libglib-2.0-0.dll)
7.  Fix qtshark use its own .rc file (not done in nmake either)
8.  Fix build of plugins.
9.  Fix build of executables that use WTAP_PLUGIN_SOURCES.