Troubleshooting MinGW - cnjinhao/nana GitHub Wiki
Compilation errors or linkage errors by std::filesystem
Many MinGW distros now have some problems with std::filesystem. To fix the problems, the simplest way is to use MSYS2(http://www.msys2.org/) and GCC 8.2 or later.
To fix the problems using other MinGW distros, please rebuild nana with -std=c++11/-std=c++14. When C++17 is required, -std=c++17 is still allowed if you use boost::filesystem /nana::filesystem instead of std::filesystem. There is simple troubleshooting guide that should resolve the problems.
//Generate a makefile, the generated makefile default enables C++17
cmake C:\nana -G "MinGW Makefiles" -DNANA_CMAKE_NANA_FILESYSTEM_FORCE=1
//Then call make to build nana
mingw32-make
//Compile your program. Suppose the libnana.a is in current folder.
g++ -o program program.cpp -s -std=c++17 -L./ -lnana -lgdi32 -lcomdlg32 -IC:\nana\include -DNANA_FILESYSTEM_FORCE
-DNANA_CMAKE_NANA_FILESYSTEM_FORCE=1is to generate a makefile that usesnana::filesystem.-DNANA_FILESYSTEM_FORCEis to enablenana::filesystemfor your program.
But nana::filesystem is a compact implementation of std::filesystem. When you need complete functionalities on std::filesystem, we recommand you to use boost::filesystem. The two options for boost::filesystem are:
-DNANA_CMAKE_BOOST_FILESYSTEM_FORCE=1-DBOOST_FILESYSTEM_FORCE
Using MSYS2
There are 2 major issues on most MinGW distros, std::filesystem and COM. The MSYS2 is a recommanded distro for Nana C++ Library.
Installing MSYS2 and MinGW
Frist of all, please download msys2-x86_64_xxx.exe, then install it(Suppose it is installed in C:\msys64).
Run the msys2(c:\msys64\msys2_shell.cmd -msys), update the package database.
# Update the package database
pacman -Syu
# It may prompt you to close the terminal window and run msys2 again
pacman -Su
Now, install MinGW
#Install full toolchain, it may contain 17 packages.
pacman -S mingw-w64-x86_64-toolchain
#If you don't need toolchain for full GCC then you can install only C++
pacman -S mingw-w64-x86_64-gcc
Compiling Nana Using Code::Blocks
First, we need to set compilers for Code::Blocks.

Then right-click the nana project in Workspace, choose the Build options..., check Have g++ follow the comming C++1z(aka C++17) ISO C++ Language Standard [-std=c++1z]. Now we can build the Nana.
Compiling Nana Using Makefile
In MSYS2's MinGW distro, there is not a make or mingw32-make contained in its bin directory. so we need to install make in MSYS2 and compile Nana in MSYS2. Run MSYS2 with g++ enabled(C:\msys2\msys2_shell.cmd -mingw64)
pacman -S make
Now, enter the nana/build/makefile folder, run
make -j4
The default makefile only enables -std=c++11, please modify it if -std=c++17 is required.
Compiling Nana Using CMake
In MSYS2's MinGW distro, there is not a make or mingw32-make contained in its bin directory. so we need to install make in MSYS2 and compile Nana in MSYS2. Run MSYS2 with g++ enabled(C:\msys2\msys2_shell.cmd -mingw64)
pacman -S cmake make
Now, enter the nana folder, run
mkdir cmake-build && cd cmake-build
cmake .. -G "Unix Makefiles"
make -j4