我试图在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})
最佳答案
对我来说,类似的东西,我只是使用:
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
或VERBATIM
。DEPENDS
选项指定仅在构建为此选项提供的项目后才必须执行命令。编辑:
也许这就是为什么它对您不起作用的原因。
解决方法可能是(有点难看):
关于c++ - 在CMake中添加自定义构建步骤,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18427877/