Apparently the current compile check is not sufficient:
```
[ 54s] -- The C compiler identification is GNU 8.2.1
[ 54s] -- The CXX compiler identification is GNU 8.2.1
[ 54s] -- Check for working C compiler: /usr/bin/gcc-8
[ 54s] -- Check for working C compiler: /usr/bin/gcc-8 - works
[ 54s] -- Detecting C compiler ABI info
[ 54s] -- Detecting C compiler ABI info - done
[ 54s] -- Detecting C compile features
[ 54s] -- Detecting C compile features - done
[ 54s] -- Check for working CXX compiler: /usr/bin/g++-8
[ 55s] -- Check for working CXX compiler: /usr/bin/g++-8 - works
…
[ 55s] -- Performing Test COULD_COMPILE_TEST_PROGRAM_0
[ 55s] -- Performing Test COULD_COMPILE_TEST_PROGRAM_0 - Success
[ 55s] -- Linking tageditor against special library for std::filesystem support is not required.
…
[ 109s] FAILED: tageditor
[ 109s] : && /usr/bin/g++-8 -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -DNDEBUG -O2 -g -DNDEBUG -Wl,--as-needed -Wl,--no-undefined -Wl,-z,now -rdynamic CMakeFiles/tageditor.dir/tageditor_autogen/mocs_compilation.cpp.o CMakeFiles/tageditor.dir/application/main.cpp.o CMakeFiles/tageditor.dir/cli/attachmentinfo.cpp.o CMakeFiles/tageditor.dir/cli/fieldmapping.cpp.o CMakeFiles/tageditor.dir/cli/helper.cpp.o CMakeFiles/tageditor.dir/cli/mainfeatures.cpp.o CMakeFiles/tageditor.dir/application/knownfieldmodel.cpp.o CMakeFiles/tageditor.dir/application/targetlevelmodel.cpp.o CMakeFiles/tageditor.dir/application/settings.cpp.o CMakeFiles/tageditor.dir/gui/fileinfomodel.cpp.o CMakeFiles/tageditor.dir/misc/htmlinfo.cpp.o CMakeFiles/tageditor.dir/misc/utility.cpp.o CMakeFiles/tageditor.dir/gui/attachmentsedit.cpp.o CMakeFiles/tageditor.dir/gui/attachmentsmodel.cpp.o CMakeFiles/tageditor.dir/gui/codeedit.cpp.o CMakeFiles/tageditor.dir/gui/entertargetdialog.cpp.o CMakeFiles/tageditor.dir/gui/mainwindow.cpp.o CMakeFiles/tageditor.dir/gui/minimumemptyspinbox.cpp.o CMakeFiles/tageditor.dir/gui/notificationlabel.cpp.o CMakeFiles/tageditor.dir/gui/notificationmodel.cpp.o CMakeFiles/tageditor.dir/gui/pathlineedit.cpp.o CMakeFiles/tageditor.dir/gui/picturepreviewselection.cpp.o CMakeFiles/tageditor.dir/gui/filefilterproxymodel.cpp.o CMakeFiles/tageditor.dir/gui/initiate.cpp.o CMakeFiles/tageditor.dir/gui/javascripthighlighter.cpp.o CMakeFiles/tageditor.dir/gui/renamefilesdialog.cpp.o CMakeFiles/tageditor.dir/gui/settingsdialog.cpp.o CMakeFiles/tageditor.dir/gui/tagedit.cpp.o CMakeFiles/tageditor.dir/gui/tagfieldedit.cpp.o CMakeFiles/tageditor.dir/gui/tageditorwidget.cpp.o CMakeFiles/tageditor.dir/dbquery/dbquery.cpp.o CMakeFiles/tageditor.dir/dbquery/musicbrainz.cpp.o CMakeFiles/tageditor.dir/dbquery/makeitpersonal.cpp.o CMakeFiles/tageditor.dir/dbquery/lyricswikia.cpp.o CMakeFiles/tageditor.dir/gui/dbquerywidget.cpp.o CMakeFiles/tageditor.dir/misc/networkaccessmanager.cpp.o CMakeFiles/tageditor.dir/renamingutility/filesystemitem.cpp.o CMakeFiles/tageditor.dir/renamingutility/filesystemitemmodel.cpp.o CMakeFiles/tageditor.dir/renamingutility/filteredfilesystemitemmodel.cpp.o CMakeFiles/tageditor.dir/renamingutility/renamingengine.cpp.o CMakeFiles/tageditor.dir/renamingutility/tageditorobject.cpp.o CMakeFiles/tageditor.dir/tageditor_autogen/3YJK5W5UP7/qrc_icons.cpp.o CMakeFiles/tageditor.dir/tageditor_autogen/3YJK5W5UP7/qrc_scripts.cpp.o CMakeFiles/tageditor.dir/tageditor_autogen/JU62CA5L7X/qrc_tageditor_translations.cpp.o -o tageditor /usr/lib64/libqtutilities.so.6.4.1 /usr/lib64/libtagparser.so.10.0.0 /usr/lib64/libQt5Concurrent.so.5.12.7 /usr/lib64/libQt5WebEngineWidgets.so.5.15.3 /usr/lib64/libc++utilities.so.5.10.4 /usr/lib64/libQt5WebEngineCore.so.5.15.3 /usr/lib64/libQt5WebChannel.so.5.12.7 /usr/lib64/libQt5Positioning.so.5.12.7 /usr/lib64/libQt5Quick.so.5.12.7 /usr/lib64/libQt5Qml.so.5.12.7 /usr/lib64/libQt5Network.so.5.12.7 /usr/lib64/libQt5PrintSupport.so.5.12.7 /usr/lib64/libQt5Widgets.so.5.12.7 /usr/lib64/libQt5Gui.so.5.12.7 /usr/lib64/libQt5Core.so.5.12.7 && :
[ 109s] /usr/lib64/gcc/x86_64-suse-linux/8/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/tageditor.dir/cli/mainfeatures.cpp.o: in function `Cli::setTagInfo(Cli::SetTagInfoArgs const&)':
[ 109s] /home/abuild/rpmbuild/BUILD/tageditor-3.4.0/build/../cli/mainfeatures.cpp:889: undefined reference to `std::filesystem::last_write_time(std::filesystem::__cxx11::path const&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::error_code&)'
[ 109s] collect2: error: ld returned 1 exit status
```
For `c++utilities` itself it doesn't seem to matter:
```
[ 33s] -- Performing Test COULD_COMPILE_TEST_PROGRAM_0
[ 35s] -- Performing Test COULD_COMPILE_TEST_PROGRAM_0 - Success
[ 35s] -- Linking c++utilities against special library for std::filesystem support is not required.
…
[ 43s] [22/22] /usr/bin/cmake -E cmake_symlink_library libc++utilities.so.5.10.4 libc++utilities.so.5 libc++utilities.so && :
[ 43s] + RPM_EC=0
```
For some reason the AppImage build doesn't have the problem:
```
[ 77s] -- The C compiler identification is GNU 8.2.1
[ 77s] -- The CXX compiler identification is GNU 8.2.1
[ 77s] -- Check for working C compiler: /usr/bin/gcc-8
[ 77s] -- Check for working C compiler: /usr/bin/gcc-8 -- works
[ 77s] -- Detecting C compiler ABI info
[ 78s] -- Detecting C compiler ABI info - done
[ 78s] -- Detecting C compile features
[ 78s] -- Detecting C compile features - done
[ 78s] -- Check for working CXX compiler: /usr/bin/g++-8
[ 78s] -- Check for working CXX compiler: /usr/bin/g++-8 -- works
[ 78s] -- Detecting CXX compiler ABI info
[ 78s] -- Detecting CXX compiler ABI info - done
[ 78s] -- Detecting CXX compile features
[ 79s] -- Detecting CXX compile features - done
[ 79s] -- Looking for iconv
[ 79s] -- Looking for iconv - found
[ 79s] -- Using iconv from the standard library for target c++utilities.
[ 79s] -- Using std::fstream for NativeFileStream
[ 79s] -- Performing Test COULD_COMPILE_TEST_PROGRAM_0
[ 80s] -- Performing Test COULD_COMPILE_TEST_PROGRAM_0 - Failed
[ 80s] -- Performing Test COULD_COMPILE_TEST_PROGRAM_1
[ 81s] -- Performing Test COULD_COMPILE_TEST_PROGRAM_1 - Success
[ 81s] -- Linking c++utilities against library "-lstdc++fs" for std::filesystem support.
```
Some backend libraries of Syncthing Tray and Reflective RapidJSON only use
certain headers of qtutilities/c++utilities. The current solution did not
really work because it did not distinguish between the build and install
interface and also did not take compile definitions and options into
account.
This basically creates imported targets from those
pkg-config modules. It also supports static linkage.
The main effort here is that those imported targets
are also exported appropriately. This is implemented
by letting the config script re-run pkg-config as
required.
Previously the case when the dependency of a static library
was provided by a dynamic library has not been handled
correctly leading to linker errors when building the final
application.
- Ensure static versions of 3rd party libs are
found correctly
- Link tests against statically if only static
libraries have been built
- Ensure standard lib is linked statically when
static linkage is enabled