The Cygwin cross-compilers are available on Fedora/EPEL using a custom repo (Copr) – https://copr.fedorainfracloud.org/coprs/yselkowitz/cygwin – so in principle it should be possible to run it on Ubuntu too. I don't know if you can install Fedora/EPEL cygwin on Ubuntu and if it would work (you could try converting the RPM to a deb using alien and installing that). Otherwise, you could study the RPM spec files for hints on how to build it from source on Ubuntu.
Note that Cygwin has three parts – a toolchain, the runtime DLL, and ported packages. The runtime DLL and the ported packages won't work under Linux unless you use Wine, and given the limitations of Wine's emulation of the Windows API may not work reliably (depending on exactly what you are using them for). The toolchain can be compiled for Linux as a cross-compiler, and then you can use it to compile Cygwin executables from Linux. This may be useful if you have a Linux-only CI environment, if you have plenty of Linux hosts and a shortage of Windows hosts, etc. (Trying to run the toolchain under Wine may work, although last time I tried to run Cygwin executables under Wine it complained I was using the wrong cygwin1.dll version for my Windows version – maybe using a newer Wine may fix that.)
Anyway, I managed to install Fedora 33 in a chroot on Ubuntu 19.10, and then install and run the Cygwin toolchain in that Fedora chroot – see the following script. Note this doesn't work on Ubuntu 20.04 or later due to the removal of yum in Ubuntu 20.04. Probably there is a less hacky way, like using a Fedora Docker container, or trying to use Alien to install the Fedora RPMs on Ubuntu directly.
Acknowledgement: parts of below script were lifted from this answer
#!/bin/bash
set -xue
Script to install Fedora 33 in a chroot on Ubuntu
And then in turn install cygwin64-gcc in that chroot
Finally we test we can compile a .exe with Cygwin
Run this as root
Works on Ubuntu 19.10
Configuration
fedoraver=33
chroot=/fedora${fedoraver}
rpminst=/tmp/rpminst
server=https://download.fedoraproject.org
serverpath=pub/fedora/linux/releases/${fedoraver}/Everything/x86_64/os/Packages/f
serverfile=fedora-repos-${fedoraver}-1.noarch.rpm
Install yum and yumdownloader
apt install -y yum yum-utils
Create our chroot
mkdir -p $chroot
Download and install the fedora-repos package
wget $server/$serverpath/$serverfile
rpm -i --nodeps --force --root=$chroot $serverfile
Ubuntu's RPM is too old for python-pip-wheel package
So says YUM. But it works anyway if you do it manually
mkdir -p ${rpminst}
yumdownloader --installroot=$chroot --releasever=${fedoraver} --destdir=${rpminst} python-pip-wheel
rpm -i --nodeps --force --root=$chroot ${rpminst}/*.rpm
Install DNF and core plugins
yum --installroot=$chroot --releasever=${fedoraver} install -y --nogpgcheck dnf dnf-plugins-core
Ensure we can resolve DNS
rm -f $chroot/etc/resolv.conf
cp /etc/resolv.conf $chroot/etc
Enable cygwin DNF repository
chroot $chroot dnf --releasever ${fedoraver} copr enable -y yselkowitz/cygwin
Install cygwin64-gcc
chroot $chroot dnf --releasever ${fedoraver} install --nogpgcheck -y cygwin64-gcc
Create test.c
echo $'#include<stdio.h>\nint main(int argc,char**argv){printf("Hello World!\n");return 0;}' > $chroot/test.c
Compile test.c
chroot $chroot x86_64-pc-cygwin-gcc -o test.exe test.c