Quindi io uso qmake per creare il mio programma, ma sono sempre che hanno un conflitto tra il mio debug e rilasciare le librerie Boost con il messaggio:Come individuare il bersaglio di Qt Creator (debug/release) (Visual Studio)
libboost_system-vc120-mt-s-1_58.lib(error_code.obj):-1: error: LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in main.obj
Mi piacerebbe rendere questo automatizzato, in modo tale che sia sufficiente scegliere il debug o il rilascio da Qt Creator per creare la versione corretta. Ho visto altre soluzioni come quella here, ma non funziona. Il motivo per cui non funziona si può vedere quando si chiama il seguente comando sia per il debug e rilasciare:
message($$CONFIG)
che stampare la configurazione di qmake. I risultati sono i seguenti:
Per diffusione:
lex yacc di debug eccezioni depend_includepath testcase_targets import_plugins import_qpa_plugin rtti_off incremental_off finestre link_prl rilascio qt warn_on incrementale piatto precompile_header autogen_precompile_source debug_and_release debug_and_release_target embed_manifest_dll embed_manifest_exe C++ 11 di debug statico no_plugin_manifest rtti QPA win32 copy_dir_files MSVC rilasciano
Per Debug:
lex yacc di debug eccezioni depend_includepath testcase_targets import_plugins import_qpa_plugin rtti_off incremental_off finestre link_prl rilascio qt warn_on incrementale piatto precompile_header autogen_precompile_source debug_and_release debug_and_release_target embed_manifest_dll embed_manifest_exe C++ 11 di debug statico RTTI no_plugin_manifest QPA win32 copy_dir_files MSVC
noti che sia contiene il debug e il rilascio ... e mi chiedo perché ...
Vorrei sottolineare che ho compilato questa versione Qt dalla fonte. Ma non c'era niente di strano quando l'ho fatto. Ho usato il seguente comando per compilarlo (configure quindi compilare con semplice NMAKE):
configure -debug-and-release -opensource -platform win32-msvc2013 -opengl desktop -static -nomake examples -nomake tests
ho cercato una soluzione noiosa aggiungendo il comando: debug:CONFIG-=release
nel mio file di marca, ma che farà sì che la versione finale di diventare il debug con una dimensione di 30 MB invece di 14 MB quando scelgo la versione di Qt Creator.
Il mio file qmake è tipico. Quello che segue è la parte che potrebbe avere qualcosa a che fare con il problema. Le altre parti aggiungono solo file e librerie e percorsi:
QMAKE_CFLAGS += /MT
QT += core gui
unix:QMAKE_CXXFLAGS += -std=c++11
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = MyProg
TEMPLATE = app
Quindi perché questo problema si verifica? Perché il mio debug o rilascio di un debug e rilascio? Come posso distinguere tra loro?
Si prega di chiedere se avete bisogno di ulteriori informazioni.
http://code.qt.io/cgit/qt/qtbase.git/tree/configure#n2401 dice che 'debug e rilascio 'è un'opzione solo per Mac. – Mitch
@Mitch Weird ... non ha mai avuto problemi con la compilazione! –
Se questo sembra un bug, per favore segnalalo. Sembra che dovresti almeno ricevere un avvertimento, e questo potrebbe averti risparmiato un sacco di tempo ... ma non ne so molto su qmake. – Mitch