ANNOUNCEMENT: Live Wireshark University & Allegro Packets online APAC Wireshark Training Session
April 17th, 2024 | 14:30-16:00 SGT (UTC+8) | Online

Wireshark-dev: [Wireshark-dev] CMake for Windows

From: Graham Bloice <graham.bloice@xxxxxxxxxxxxx>
Date: Thu, 20 Jun 2013 16:55:01 -0700
As the starter for some planned major improvements|changes to the win32 build, I'd like to get CMake working for building Wireshark on Windows.

I know what I'm doing with the nmake builds, and have once built successfully on Ubuntu with CMake, but that's about it for my CMake knowledge, so I'm looking for support (Joerg?) to do this, so that:

a) I don't break CMake on other platforms
b) I actually get CMake working on Windows

The first issue I ran into was that CMake wasn't able to find all the third party libraries we link with, and required very laborious editing of the required items in the CMake GUI.

Currently the third party libs are retrieved by a bash script run via nmake (tools\win-setup.sh) that I'm leaving alone for the moment.  That script pulls the required libraries from wireshark.org as zip bundles and then expands all the bundles into a single "libs" directory, the path to which is configured by the user in "config.nmake".

My current trunk contents of this "libs" directory is shown below:

AirPcap_Devpack_4_1_0_1622
c-ares-1.9.1-1-win32ws
GeoIP-1.4.8-2-win32ws
gnutls-2.12.18-1.2-win32ws
gtk2
kfw-3-2-2-i386-ws-vc6
libsmi-svn-40773-win32ws
lua5.1.4
nasm-2.09.08
portaudio_v19_2
upx303w
user-guide
WinSparkle-0.3-44-g2c8d9d3-win32ws
WpdPack
zlib125

Most of these directories contain the required items in three sub-directories; "bin" for DLL's, "include" for headers and "lib" for .lib import libraries used when linking but some don't follow this pattern (blame the originating projects) and the gtk2 directory is an enormous bit-bucket of all things gnome including glib.

So, given all the above, how do I get CMake to search the "libs" directory for the required items?  I'm not adverse to adding a config.CMake for the user to edit as required.  I suspect I'll need to add some custom CMake search packages?? to do this on win32.

Graham