我正在尝试在 CMake 中添加一个生成一些文件的自定义构建步骤。我还没有找到它是如何工作的描述。
我有一个项目,其中源文件、头文件和实现文件必须由 ODB for 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})