Я пытаюсь добавить пользовательский шаг сборки в CMake, который генерирует некоторые файлы. Я не нашел описания, как это работает.
У меня есть проект, где файлы источника, заголовка и реализации должны быть созданы ODB для С++. ODB принимает заголовки классов в качестве аргументов и генерирует исходные файлы, которые я хочу использовать в своем проекте.
Сейчас у меня есть следующая команда в 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
)
Для файла person.hpp
ODB должен генерировать person-odb.hxx
, person-odb.cxx
, person-odb.ixx
, но команда CMake, которую я использовал, не генерирует ничего. В терминале эта команда работает нормально.
Что я делаю неправильно?
EDIT: проблему можно решить, добавив следующие строки:
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})