Abbiamo una base di codice abbastanza grande. La maggior parte del codice è compilata usando qmake per produrre i makefile. Tuttavia, alcuni sottoprogetti vengono generati eseguendo file batch o eseguendo altri programmi.Esecuzione di un programma/script da QMake
Mi piacerebbe essere in grado di avere tutto compilato usando qmake, ma non riesco a capire come ottenere qmake per eseguire semplicemente uno script.
Una cosa che ho provato è usare QMAKE_EXTRA_TARGETS nel mio file pro, in questo modo:
TEMPLATE = lib
SOURCES = placeholder.cpp
CONFIG += no_link staticlib
batch_runner.target = placeholder.cpp
batch_runner.commands = my_batch_file.bat
QMAKE_EXTRA_TARGETS = batch_runner
Ho poi avere il file batch prodotti placeholder.cpp in questo modo:
# do the real work here
# ...
# create placeholder.cpp so qmake and nmake are happy
echo // dummy >> placeholder.cpp
Sembra funzionare bene. Il problema è che è un po 'ingarbugliato. Se non specifichi batch_runner.target (cioè lo lascio in bianco) o non metti placeholder.cpp in SOURCES, il file batch non viene mai eseguito. Questo perché qmake non sta facendo batch_runner.commanda l'azione per qualsiasi altra dipendenza nel Makefile.
C'è un modo migliore per ottenere QMake per costruire un Makefile in modo che uno script venga eseguito quando viene eseguito il Makefile?
Interessante. Funziona, ma il comando viene eseguito quando viene eseguito 'qmake' piuttosto che quando viene eseguito 'nmake'. Capita anche di essere eseguito tre volte piuttosto che una volta dovrebbe essere effettivamente eseguito. –
Potrebbe essere necessario aggiungere un ambito per garantire che venga eseguito una sola volta. –
Ho appena aggiunto l'ambito all'esempio in modo che il comando venga eseguito una sola volta quando viene eseguito qmake. – pixelgrease