proxmark3
proxmark3 copied to clipboard
Build error: C++20 -Werror=template-id-cdtor in proxguiqt.cpp
Describe the bug Build failure caused by C++20 compiler change: template-id not allowed for constructor in C++20
To Reproduce Steps to reproduce the behavior:
- Download git repo on Fedora 40
- Install all required dependancies
- Run
make -j all
- Build fails due to
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: error: template-id not allowed for constructor in C++20 [-Werror=template-id-cdtor]
284 | explicit QFutureInterface<void>(State initialState = NoState)
| ^~~~~
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: note: remove the ‘< >’
Expected behavior The build should succeed.
Desktop (please complete the following information):
- OS: Linux - Fedora 40
Additional context
The error is resolved and the build can successfully complete if the change suggested by the compiler is made and <void>
is removed from Line 284 of /usr/include/qt5/QtCore/qfutureinterface.h
This leads me to believe this isn't a problem strictly with Proxmark3 but with the QT development library. But I'm posting here to be sure.
Full build log is as follows:
Build Log
===================================================================
Version info: Iceman/master/v4.18341-152-g2bc7c5030
Platform name: Proxmark3 generic target
PLATFORM: PM3GENERIC
PLATFORM_FPGA: xc2s30
PLATFORM_SIZE: 512
Platform extras: No extra selected
Included options: LF HITAG EM4x50 EM4x70 ZX8211 GENERAL_HF ISO15693 LEGICRF ISO14443b ISO14443a ICLASS FELICA NFCBARCODE HFSNIFF HFPLOT
Standalone mode: LF_SAMYRUN
===================================================================
[*] MAKE client/all
[*] MAKE bootrom/all
[*] MAKE fpga_compress/all
[*] MAKE mfkey/all
[*] MAKE nonce2key/all
[*] MAKE mf_nonce_brute/all
[*] MAKE mfd_aes_brute/all
[*] MAKE cryptorf/all
[-] CC fpga_compress.c
[-] CC ../../common/lz4/lz4hc.c
[-] CC ../../common/lz4/lz4.c
[-] CC mf_nonce_brute.c
[-] CC nonce2key.c
[-] CC mfkey32.c
[-] CC ../../common/crapto1/crypto1.c
[-] CC ../../common/crapto1/crapto1.c
[-] CC ../../common/crapto1/crypto1.c
[-] CC ../../common/crapto1/crapto1.c
[-] CC ../../common/bucketsort.c
[-] CC ../../common/bucketsort.c
[-] CC brute_key.c
[-] CC cm.c
[-] CC ../../common/crapto1/crypto1.c
[-] CC ../../common/crapto1/crapto1.c
[-] CC nested_util.c
[-] CC ../../common/cryptorf/cryptolib.c
[-] CC util.c
[-] CC util_posix.c
[-] CC iso14443crc.c
[-] CC ../../common/bucketsort.c
[-] CC sleep.c
[-] CC sm.c
[-] CC randoms.c
[-] CC util_posix.c
[-] CC mfkey32v2.c
compiler version: arm-none-eabi-gcc (Fedora 13.2.0-5.fc40) 13.2.0
[=] CHECK version_pm3.c
[-] CC mfd_aes_brute.c
[-] CC ram-reset.s
[-] CC mf_trace_brute.c
[-] CXX sma.cpp
[-] CC mfkey64.c
[-] CC flash-reset.s
[-] CXX sma_multi.cpp
[-] CC mfd_multi_brute.c
[-] CC staticnested.c
[-] CC ../common_arm/usb_cdc.c
[-] CC ../common_arm/clocks.c
[-] CC bootrom.c
[-] CC version_pm3.c
[=] CXX brute_key
===================================================================
Version info: Iceman/master/v4.18341-152-g2bc7c5030
Client platform: Linux
GUI support: QT5 found, enabled (Qt version 5.15.13 in /usr/lib64)
native BT support: Bluez found, enabled
Jansson library: system library not found, using local library
Lua library: system library not found, using local library
[=] LD obj/bootrom.elf
Python3 library: Python3 v3.12 found, enabled
[=] GEN obj/bootrom.s19
GD library: GD v2.3.3 found, enabled
Readline library: enabled
Whereami library: system library not found, using local library
Lua SWIG: wrapper found
Python SWIG: wrapper found
compiler version: cc (GCC) 14.0.1 20240411 (Red Hat 14.0.1-0)
===================================================================
[=] CXX mfd_multi_brute
[=] CXX mfd_aes_brute
[-] CC src/mifare/aiddesfire.c
[-] CC src/aidsearch.c
[-] CC src/atrs.c
[-] CC src/cmdanalyse.c
[=] CXX cm
[=] CXX sm
[-] CC src/cmdcrc.c
[-] CC src/cmddata.c
[-] CC src/cmdflashmem.c
[-] CC src/cmdflashmemspiffs.c
[-] CC src/cmdhf.c
[-] CC src/cmdhf14a.c
[-] CC src/cmdhf14b.c
[-] CC src/cmdhf15.c
[-] CC src/cmdhfcryptorf.c
[=] CXX mf_nonce_brute
[=] CXX mf_trace_brute
[-] CC src/cmdhfepa.c
[=] CXX nonce2key
[-] CC src/cmdhfemrtd.c
[-] CC src/cmdhffelica.c
[-] CC src/cmdhffido.c
[-] CC src/cmdhffudan.c
[-] CC src/cmdhfgallagher.c
[-] CC src/cmdhfksx6924.c
[-] CC src/cmdhfcipurse.c
[-] CC src/cmdhficlass.c
[=] CXX mfkey32
[=] CXX mfkey32v2
[=] CXX mfkey64
[-] CC src/cmdhfict.c
[=] CXX staticnested
[=] CXX sma
[-] CC src/cmdhflegic.c
[-] CC src/cmdhfjooki.c
[-] CC src/cmdhflist.c
[-] CC src/cmdhflto.c
[-] CC src/cmdhfmf.c
[-] CC src/cmdhfmfdes.c
[-] CC src/cmdhfmfhard.c
[-] CC src/cmdhfmfu.c
[=] CXX sma_multi
[-] CC src/cmdhfmfp.c
[-] CC src/cmdhfntag424.c
[-] CC src/cmdhfseos.c
[-] CC src/cmdhfst.c
[-] CC src/cmdhfst25ta.c
[-] CC src/cmdhftesla.c
[-] CC src/cmdhfthinfilm.c
[-] CC src/cmdhftopaz.c
[-] CC src/cmdhftexkom.c
[-] CC src/cmdhfvas.c
[-] CC src/cmdhfxerox.c
[-] CC src/cmdhw.c
[-] CC src/cmdlf.c
[-] CC src/cmdlfawid.c
[-] CC src/cmdlfcotag.c
[-] CC src/cmdlfdestron.c
[-] CC src/cmdlfem.c
[-] CC src/cmdlfem410x.c
[-] CC src/cmdlfem4x05.c
[-] CC src/cmdlfem4x50.c
[-] CC src/cmdlfem4x70.c
[-] CC src/cmdlffdxb.c
[-] CC src/cmdlfguard.c
[-] CC src/cmdlfgallagher.c
[-] CC src/cmdlfhid.c
[-] CC src/cmdlfhitag.c
[-] CC src/cmdlfidteck.c
[-] CC src/cmdlfindala.c
[-] CC src/cmdlfio.c
[-] CC src/cmdlfjablotron.c
[-] CC src/cmdlfkeri.c
[-] CC src/cmdlfmotorola.c
[-] CC src/cmdlfnedap.c
[-] CC src/cmdlfnexwatch.c
[-] CC src/cmdlfnoralsy.c
[-] CC src/cmdlfpac.c
[-] CC src/cmdlfparadox.c
[-] CC src/cmdlfpcf7931.c
[-] CC src/cmdlfpresco.c
[-] CC src/cmdlfpyramid.c
[-] CC src/cmdlfsecurakey.c
[-] CC src/cmdlft55xx.c
[-] CC src/cmdlfti.c
[-] CC src/cmdlfviking.c
[-] CC src/cmdlfvisa2000.c
[-] CC src/cmdlfzx8211.c
[-] CC src/cmdmain.c
[-] CC src/cmdnfc.c
[-] CC src/cmdparser.c
[-] CC src/cmdpiv.c
[-] CC src/cmdscript.c
[-] CC src/cmdsmartcard.c
[-] CC src/cmdtrace.c
[-] CC src/cmdusart.c
[-] CC src/cmdwiegand.c
[-] CC src/comms.c
[-] CC src/crypto/asn1dump.c
[-] CC src/crypto/asn1utils.c
[-] CC src/crypto/libpcrypto.c
[-] CC src/emv/cmdemv.c
[-] CC src/emv/crypto.c
[-] CC src/emv/crypto_polarssl.c
[-] CC src/emv/dol.c
[=] CXX fpga_compress
[-] CC src/emv/emv_pk.c
[-] CC src/emv/emv_pki.c
[-] CC src/emv/emv_pki_priv.c
[*] MAKE armsrc/all
[-] CC src/emv/emv_roca.c
compiler version: arm-none-eabi-gcc (Fedora 13.2.0-5.fc40) 13.2.0
[-] GEN fpga_version_info.c
[-] GEN obj/fpga_all.bit.z
[-] CC start.c
[-] CC iso15693.c
[-] CC ../common/iso15693tools.c
[-] CC thinfilm.c
[-] CC lfops.c
[-] CC lfsampling.c
[-] CC pcf7931.c
[-] CC ../common/lfdemod.c
[-] CC lfadc.c
[-] CC ../common/lz4/lz4.c
[-] CC legicrf.c
[-] CC legicrfsim.c
[-] CC ../common/legic_prng.c
[-] CC src/emv/emv_tags.c
[-] CC ../common/hitag2/hitag2_crypto.c
[-] CC hitag2.c
[-] CC hitagS.c
[-] CC hitag2_crack.c
[-] CC em4x50.c
[-] CC ../common/bruteforce.c
[-] CC em4x70.c
[-] CC hfops.c
[-] CC iso14443a.c
[-] CC mifareutil.c
[-] CC mifarecmd.c
[-] CC epa.c
[-] CC mifaresim.c
[-] CC sam_mfc.c
[-] CC sam_seos.c
[-] CC iso14443b.c
[-] CC ../common/crapto1/crypto1.c
[-] CC ../common/mbedtls/des.c
[-] CC desfire_crypto.c
[-] CC mifaredesfire.c
[-] CC ../common/mbedtls/aes.c
[-] CC ../common/mbedtls/platform_util.c
[-] CC iclass.c
[-] CC optimized_cipherutils.c
[-] CC optimized_ikeys.c
[-] CC optimized_elite.c
[-] CC optimized_cipher.c
[-] CC sam_picopass.c
[-] CC ../common/crc.c
[-] CC ../common/crc16.c
[-] CC src/emv/emvcore.c
[-] CC ../common/crc32.c
[-] CC felica.c
[-] CC ../armsrc/Standalone/lf_samyrun.c
[-] CC lfzx.c
[-] CC appmain.c
[-] CC printf.c
[-] CC dbprint.c
[-] CC ../common/commonutil.c
[-] CC util.c
[-] CC string.c
[-] CC BigBuf.c
[-] CC ../common_arm/ticks.c
[-] CC ../common_arm/clocks.c
[-] CC hfsnoop.c
[-] CC ../common/generator.c
[-] CC fpgaloader.c
[-] CC ../common_arm/usb_cdc.c
[-] CC cmd.c
[-] CC fpga_version_info.c
[-] GEN obj/fpga_all.o
[-] CC src/emv/emvjson.c
[-] CC src/emv/tlv.c
[-] CC src/emv/test/crypto_test.c
[-] CC src/emv/test/cryptotest.c
[-] CC src/emv/test/cda_test.c
[-] CC src/emv/test/dda_test.c
[-] CC src/emv/test/sda_test.c
[-] CC src/fido/additional_ca.c
[-] CC src/fido/cose.c
[-] CC src/fido/cbortools.c
[-] CC src/fido/fidocore.c
[-] CC src/ksx6924/ksx6924core.c
[-] CC src/cipurse/cipursecore.c
[-] CC src/cipurse/cipursecrypto.c
[-] CC src/cipurse/cipursetest.c
[-] CC src/fileutils.c
[-] CC src/flash.c
[-] CC ../common/generator.c
[-] CC src/graph.c
[-] CC src/jansson_path.c
[-] CC src/iso4217.c
[-] CC src/iso7816/apduinfo.c
[-] CC src/iso7816/iso7816core.c
[-] CC src/loclass/cipher.c
[-] CC src/loclass/cipherutils.c
[-] CC src/loclass/elite_crack.c
[-] CC src/loclass/ikeys.c
[-] CC src/mifare/lrpcrypto.c
[-] CC src/mifare/desfirecrypto.c
[-] CC src/mifare/desfirecore.c
[-] CC src/mifare/desfiresecurechan.c
[-] CC src/mifare/desfiretest.c
[-] CC src/mifare/gallaghercore.c
[-] CC src/mifare/mad.c
[-] CC src/mifare/mfkey.c
[-] CC src/mifare/mifare4.c
[-] CC src/mifare/mifaredefault.c
[-] CC src/mifare/mifarehost.c
[-] CC src/mifare/gen4.c
[-] CC src/nfc/ndef.c
[-] CC src/pm3.c
[-] CC src/pm3_binlib.c
[-] CC src/pm3_bitlib.c
[-] CC src/preferences.c
[-] CHECK version_pm3.c
[-] CC version_pm3.c
[-] CC src/pm3line.c
[=] LD obj/fullimage.stage1.elf
[-] GEN obj/fullimage.data.bin
[-] GEN obj/fullimage.data.bin.z
[=] LD obj/fullimage.elf
[=] GEN obj/fullimage.s19
[*] MAKE recovery/all
[-] CC src/proxmark3.c
[=] GEN bootrom.bin
[=] GEN fullimage.bin
[=] GEN proxmark3_recovery.bin
[-] CC src/scandir.c
[-] CC src/uart/ringbuffer.c
[-] CC src/uart/uart_common.c
[-] CC src/uart/uart_posix.c
[-] CC src/uart/uart_win32.c
[-] CC src/scripting.c
[-] CC src/ui.c
[-] CC src/util.c
[=] CHECK src/version_pm3.c
[-] CC src/wiegand_formats.c
[-] CC src/wiegand_formatutils.c
[-] CC ../common/bucketsort.c
[-] CC ../common/bruteforce.c
[-] CC ../common/cardhelper.c
[-] CC ../common/crapto1/crapto1.c
[-] CC ../common/crapto1/crypto1.c
[-] CC ../common/crc.c
[-] CC ../common/crc16.c
[-] CC ../common/crc32.c
[-] CC ../common/crc64.c
[-] CC ../common/commonutil.c
[-] CC ../common/hitag2/hitag2_crypto.c
[-] CC ../common/iso15693tools.c
[-] CC ../common/legic_prng.c
[-] CC ../common/lfdemod.c
[-] CC ../common/util_posix.c
[-] CC src/imgutils.c
[-] CC src/cmdhfwaveshare.c
[-] CC src/pm3_luawrap.c
[-] CC src/pm3_pywrap.c
[-] UIC src/ui/ui_overlays.h
[-] UIC src/ui/ui_image.h
[*] MAKE deps/amiitool/libamiibo.a
[*] MAKE deps/cliparser/libcliparser.a
[*] MAKE deps/hardnested/libhardnested.a
[*] MAKE deps/id48/libid48.a
[*] MAKE deps/liblua/liblua.a for linux
[*] MAKE deps/jansson/libjansson.a
[*] MAKE obj/libmbedtls.a
[*] MAKE deps/reveng/libreveng.a
[*] MAKE deps/tinycbor/tinycbor.a
[*] MAKE deps/whereami/libwhereami.a
[=] GEN lualibs/pm3_cmd.lua
[=] GEN lualibs/mfc_default_keys.lua
[-] CC src/version_pm3.c
PLATFORM Linux
[-] CC id48_data.c
[-] CC amiibo.c
[-] CC id48_generator.c
[-] CC dump.c
[-] CC drbg.c
[-] CC id48_recover.c
[-] CC argtable3.c
[-] CC cliparser.c
[-] CC keygen.c
[-] CC error.c
[-] CC bmpbit.c
[=] TEST bmptst
[-] CC hashtable.c
[-] CC hashtable_seed.c
[-] CC bmpbit.c
[-] CC load.c
[-] CC cli.c
[-] CC memory.c
[-] CC aes.c
[-] CC model.c
[-] CC pack_unpack.c
[-] CC poly.c
[-] CC strbuffer.c
[-] CC preset.c
[-] CC strconv.c
[-] CC asn1parse.c
[-] CC utf.c
[-] CC whereami.c
[-] CC value.c
[-] CC reveng.c
[-] CC asn1write.c
[-] CC cborencoder.c
[-] CC base64.c
[-] CC bignum.c
[-] CC ctr_drbg.c
[-] CC cborencoder_close_container_checked.c
[-] CC lapi.c
[-] CC(NOSIMD) hardnested_bf_core.c
[-] CC entropy_poll.c
[-] CC(NOSIMD) hardnested_bitarray_core.c
[-] CC(MMX) hardnested_bf_core.c
[-] CC entropy.c
[-] CC cborerrorstrings.c
[-] CC error.c
[-] CC cborparser.c
[-] CC ecp.c
[-] CC cborparser_dup_string.c
[-] CC lcode.c
[-] CC cborpretty.c
[-] CC ecp_curves.c
[-] CC lctype.c
[-] CC certs.c
[-] CC cbortojson.c
[-] CC(MMX) hardnested_bitarray_core.c
[-] CC(SSE2) hardnested_bf_core.c
[-] CC camellia.c
[-] CC cborvalidation.c
[-] CC ldebug.c
[-] CC blowfish.c
[-] CC(SSE2) hardnested_bitarray_core.c
[-] CC(AVX) hardnested_bf_core.c
[-] CC ldo.c
[-] CC cipher_wrap.c
[-] CC(AVX) hardnested_bitarray_core.c
[-] CC(AVX2) hardnested_bf_core.c
[-] CC cipher.c
[-] CC ldump.c
[-] CC lfunc.c
[-] CC cmac.c
[-] CC lgc.c
[-] CC des.c
[-] CC(AVX2) hardnested_bitarray_core.c
[-] CC llex.c
[-] CC(AVX512) hardnested_bf_core.c
[-] CC ecc_point_compression.c
[-] CC lmem.c
[-] CC ecdh.c
[-] CC lobject.c
[-] CC lopcodes.c
[-] CC ecdsa.c
[-] CC gcm.c
[-] CC lparser.c
[-] CC(AVX512) hardnested_bitarray_core.c
[-] CC lstate.c
[-] CC md.c
[-] CC md5.c
[-] CC lstring.c
[-] CC hardnested_bruteforce.c
[-] CC ltable.c
[-] CC oid.c
[-] CC ltm.c
[-] CC pem.c
[-] CC arc4.c
[-] CC pk.c
[-] CC lundump.c
[-] CC pk_wrap.c
[=] AR libwhereami.a
[-] CC lvm.c
[-] CC pkwrite.c
[-] CC lzio.c
[-] CC lauxlib.c
[-] CXX src/proxgui.cpp
[-] CC lbaselib.c
[-] CC pkcs5.c
[-] CC pkcs12.c
[-] CC lbitlib.c
[-] CC pkparse.c
[-] CC lcorolib.c
[-] CC ldblib.c
[-] CC platform.c
[-] CC liolib.c
[-] CC lmathlib.c
[-] CC platform_util.c
[-] CC loslib.c
[-] CC lstrlib.c
[-] CC ltablib.c
[-] CC loadlib.c
[-] CC rsa.c
[-] CC linit.c
[-] CC rsa_internal.c
[-] CC sha1.c
[-] CC sha256.c
[-] CC sha512.c
[-] CC threading.c
[=] AR libamiibo.a
[-] CC x509.c
[-] CC x509_crl.c
[-] CC x509_crt.c
[-] CC net_sockets.c
[-] CXX src/proxguiqt.cpp
[-] MOC src/proxguiqt.moc.cpp
[-] CXX src/proxguiqt.moc.cpp
[=] AR libid48.a
[=] AR libhardnested.a
In file included from /usr/include/qt5/QtCore/qfuture.h:45,
from /usr/include/qt5/QtCore/QtCore:97,
from /usr/include/qt5/QtGui/QtGuiDepends:3,
from /usr/include/qt5/QtGui/QtGui:3,
from src/proxguiqt.h:30,
from src/proxguiqt.cpp:19:
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: error: template-id not allowed for constructor in C++20 [-Werror=template-id-cdtor]
284 | explicit QFutureInterface<void>(State initialState = NoState)
| ^~~~~
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: note: remove the ‘< >’
[=] AR libjansson.a
[=] AR tinycbor.a
[=] AR liblua.a
[=] AR libreveng.a
[=] AR libcliparser.a
In file included from /usr/include/qt5/QtCore/qfuture.h:45,
from /usr/include/qt5/QtCore/QtCore:97,
from /usr/include/qt5/QtGui/QtGuiDepends:3,
from /usr/include/qt5/QtGui/QtGui:3,
from src/proxguiqt.h:30,
from src/proxgui.cpp:22:
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: error: template-id not allowed for constructor in C++20 [-Werror=template-id-cdtor]
284 | explicit QFutureInterface<void>(State initialState = NoState)
| ^~~~~
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: note: remove the ‘< >’
In file included from /usr/include/qt5/QtCore/qfuture.h:45,
from /usr/include/qt5/QtCore/QtCore:97,
from /usr/include/qt5/QtGui/QtGuiDepends:3,
from /usr/include/qt5/QtGui/QtGui:3,
from src/proxguiqt.h:30,
from src/proxguiqt.moc.cpp:10:
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: error: template-id not allowed for constructor in C++20 [-Werror=template-id-cdtor]
284 | explicit QFutureInterface<void>(State initialState = NoState)
| ^~~~~
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: note: remove the ‘< >’
[=] AR libmbedtls.a
cc1plus: all warnings being treated as errors
make[1]: *** [Makefile:1004: obj/proxguiqt.o] Error 1
make[1]: *** Waiting for unfinished jobs....
cc1plus: all warnings being treated as errors
make[1]: *** [Makefile:1004: obj/proxgui.o] Error 1
cc1plus: all warnings being treated as errors
make[1]: *** [Makefile:1004: obj/proxguiqt.moc.o] Error 1
make: *** [Makefile:177: client/all] Error 2
same error on Arch, try to checkout the latest release tag then compile as usual.
git checkout tags/v4.18341
This sounds more of a QT5 change than anything that we do
Bumped into this issue as well.
On v4.18341
the warning is:
In file included from /usr/include/qt/QtCore/qfuture.h:45,
from /usr/include/qt/QtCore/QtCore:97,
from /usr/include/qt/QtGui/QtGuiDepends:3,
from /usr/include/qt/QtGui/QtGui:3,
from src/proxguiqt.h:30,
from src/proxguiqt.cpp:19:
/usr/include/qt/QtCore/qfutureinterface.h:284:37: warning: template-id not allowed for constructor in C++20 [-Wtemplate-id-cdtor]
284 | explicit QFutureInterface<void>(State initialState = NoState)
| ^~~~~
/usr/include/qt/QtCore/qfutureinterface.h:284:37: note: remove the ‘< >’
On main the error is:
In file included from /usr/include/qt/QtCore/qfuture.h:45,
from /usr/include/qt/QtCore/QtCore:97,
from /usr/include/qt/QtGui/QtGuiDepends:3,
from /usr/include/qt/QtGui/QtGui:3,
from src/proxguiqt.h:30,
from src/proxguiqt.moc.cpp:10:
/usr/include/qt/QtCore/qfutureinterface.h:284:37: error: template-id not allowed for constructor in C++20 [-Werror=template-id-cdtor]
284 | explicit QFutureInterface<void>(State initialState = NoState)
| ^~~~~
/usr/include/qt/QtCore/qfutureinterface.h:284:37: note: remove the ‘< >’
So there is a difference in wording (error vs. warning). Not sure were it is coming from. Arch recently updated its gcc13 package. Maybe this changed something. Or like @iceman1001 said, something with Qt.
funny thing, the .moc.cpp is created by QT... So its nothing we have control over more than it might be needed to regenerate on your systems?
@iceman1001 I'll look into reporting this bug to the QT devs instead. Out of curiosity, is there a way to retarget the build to use QT6?
you will need to modify the Makefiles / Cmakefile to use QT6 instead.
Should I close this issue since it's a Qt problem or leave it open?
keep it open until you got some more answers.
For now you can use the following patch in order to just make build working and suppress the error:
diff --git a/client/Makefile b/client/Makefile
index 1b7090f68..22bd772b4 100644
--- a/client/Makefile
+++ b/client/Makefile
@@ -446,7 +446,7 @@ endif
PM3CFLAGS += -DHAVE_SNPRINTF
-CXXFLAGS ?= -Wall -Werror
+CXXFLAGS ?= -Wall -Werror -Wno-error=template-id-cdtor
CXXFLAGS += $(MYDEFS) $(MYCXXFLAGS) $(MYINCLUDES)
PM3CXXFLAGS = $(CXXFLAGS)
I sent a bug report to the QT5 devs, who confirmed that the bug had been patched and the latest update to the upstream repositories should now resolve the issue.
https://bugzilla.redhat.com/show_bug.cgi?id=2280366
If someone needs to patch their own Qt5 install, the line to change is https://src.fedoraproject.org/rpms/qt5-qtbase/blob/664f24855f26ccaee2501b26a50108b054bf19e2/f/qtbase-qfutureinterface-fix-build-with-gcc14.patch
class QFutureInterface<void> : public QFutureInterfaceBase
{
public:
- explicit QFutureInterface<void>(State initialState = NoState)
+ explicit QFutureInterface(State initialState = NoState)
: QFutureInterfaceBase(initialState)
{ }
E.g. on Debian : /usr/include/x86_64-linux-gnu/qt5/QtCore/qfutureinterface.h
I simply replaced "CONFIG += c++17
" with "CONFIG += c++20
" in the project file.
And also added this: "DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000
"
I simply replaced "
CONFIG += c++17
" with "CONFIG += c++20
" in the project file. And also added this: "DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000
"
Interesting find, You added the c++20 in the Client Makefile right? and where did you add the QT define?
You might also want to see this: https://aur.archlinux.org/packages/proxmark3-iceman-git
Some hand-hacking was involved insofar as compilation by an AUR helper was involved.
Reminder, SKIPQT means you will not get the data plot
window
You also mentioned:
Deleting the substrings mfkey and 'nonce2key' from line 139 fixed that.
Where did you run into this?
I know. I sat and thought about it, and for what I'm using proxmark3 for right now that's fine.
I ran into that with the PKGBUILD file in the AUR. It doesn't apply here, I think.
I had the same questions you did about the projectfile and QT definition, which is why I went off in a different direction (hopefully not a rabbithole).
We have the following solutions:
- @doegox patch the QT file
qfutureinterface.h
- @GladiatorX2016 patch the makefile
CONFIG += c++20
- @sh7d suppress the message and the snprint issue which is something else
I'll give them a try tonight, and if they work on my end I'll let the AUR package maintainer know.