Sto tentando di aggiungere un passaggio personalizzato in CMake che genera alcuni file. Non ho trovato una descrizione di come funziona.Aggiungi passaggio personalizzato in CMake
Ho un progetto in cui la sorgente, i file di implementazione dell'intestazione & devono essere generati da ODB per C++. ODB prende le intestazioni di classe come argomenti e genera i file di origine che voglio usare nel mio progetto.
In questo momento ho il seguente comando nel mio CMakeLists.txt:
add_custom_command(TARGET ${PROJECT_NAME}
PRE_BUILD
COMMAND odb -o /home/david/dev/ --std c++11 -I/home/david/dev/ -d sqlite --generate- query --generate-schema ${PROMOTER_LIB_PREFIX}/entities/person.hpp
DEPENDS ${PROJECT_NAME}
VERBATIM
)
Per un file person.hpp
ODB dovrebbe generare person-odb.hxx
, person-odb.cxx
, person-odb.ixx
ma il comando CMake I''ve utilizzato non genera nulla . In un terminale questo comando funziona bene.
Cosa sto sbagliando?
EDIT: Il problema può essere risolto aggiungendo le seguenti righe:
set(FAKE_TARGET fakeTarget)
add_custom_target(fakeTarget
odb -o /home/david/dev/ --std c++11 -I/home/david/dev/ -d sqlite --generate-query --generate-schema ${PROMOTER_LIB_PREFIX}/entities/person.hpp
)
add_dependencies(${PROJECT_NAME} ${FAKE_TARGET})
Ancora non funziona quando cancello 'DEPENDS' e' VERBATIM'. –
@DavidBulczak guarda la mia modifica. Uso VS al lavoro, ecco perché funziona per me. –
Ok. Grazie. Io uso gcc/make e altri strumenti GNU. Ci sono altri modi per aggiungere passi pre-compilati personalizzati in CMake? –