我正在尝试在CMake中添加一个自定义构建步骤来生成一些文件。我还没有找到它是如何工作的描述。
我有一个项目,需要使用ODB为C++生成源、头文件和实现文件。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命令没有生成任何文件。在终端中,这个命令可以正常工作。我做错了什么? 编辑:问题可以通过添加以下几行解决:
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})
POST_BUILD
,并使您当前的项目依赖于虚假项目...你明白我的意思吗? - Pierre Fourgeaudadd_dependencies(${PROJECT_NAME} FAKE_PROJECT)
- Pierre Fourgeaud`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})`
- David Bulczak