添加自定义的建设步骤的CMake [英] Add custom build step in CMake
问题描述
我想加入CMake的自定义生成步骤,生成一些文件。我还没有找到一个描述它是如何工作。
我有一个项目中源,头&放大器;实现文件必须由ODB C ++的产生。 ODB采用类的头文件作为参数,并产生,我想在我的项目中使用的源文件。
现在,我已经在我的CMakeLists.txt下面的命令:
add_custom_command(TARGET $ {} PROJECT_NAME
pre_BUILD
COMMAND ODB -o /家庭/大卫的/ dev / --std C ++ 11 -I /家庭/大卫的/ dev / -d源码--generate-查询--generate型模式$ {PROMOTER_LIB_ preFIX} /实体/person.hpp
DEPENDS $ {} PROJECT_NAME
逐字
)
有关文件 person.hpp
ODB应该产生人次odb.hxx
,人 - odb.cxx
,人次odb.ixx
但CMake的命令我特地使用不会产生任何东西。在终端命令工作正常。
我在做什么错了?
修改:这个问题可以通过添加以下行来解决:
集(FAKE_TARGET fakeTarget)
add_custom_target(fakeTarget
ODB -o /家庭/大卫的/ dev / --std C ++ 11 -I /家庭/大卫的/ dev / -d源码--generate查询--generate-模式$ {PROMOTER_LIB_ preFIX} /实体/ person.hpp
)
add_dependencies($ {PROJECT_NAME} $ {} FAKE_TARGET)
对于我来说,有类似的东西,我只是用:
add_custom_command(TARGET $ {} PROJECT_NAME
pre_BUILD
COMMAND ODB -o /家庭/大卫的/ dev / --std C ++ 11 -I /家庭/大卫的/ dev / -d源码--generate-查询--generate型模式$ {PROMOTER_LIB_ preFIX} /实体/person.hpp
)
我们不使用取决于
或逐字
。
的 DEPENDS
选项指定的命令必须只有你给这个选项,项目建成后执行。
编辑:
注意pre_BUILD选项仅支持的Visual Studio 7或更高版本。对于所有其他发电机pre_BUILD将以pre_LINK治疗。
块引用>也许这就是为什么它不为你工作。
一个变通可能是(有点难看):
- 创建一个假的项目
- 在它加入您的自定义命令POST_BUILD
- 请您当前的项目取决于假的
I'm trying to add a custom build step in CMake that generates some files. I haven't found a description how it works.
I have an project where source, header & implementation files have to be generated by ODB for C++. ODB takes class headers as arguments and generates source files that I want to use in my project.
Right now I have the following command in my 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 )
For a file
person.hpp
ODB should generateperson-odb.hxx
,person-odb.cxx
,person-odb.ixx
but the CMake command I''ve used doesn't generate anything. In a terminal this command works fine.What am I doing wrong?
EDIT: The problem can be solved by adding the following lines:
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})
解决方案For me, with something similar, I just use :
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 )
We don't use
DEPENDS
orVERBATIM
.The
DEPENDS
option specify that the command must be executed only after that the project you gave to this option is built.EDIT :
Note that the PRE_BUILD option is only supported on Visual Studio 7 or later. For all other generators PRE_BUILD will be treated as PRE_LINK.
Maybe that's why it doesn't work for you.
A work around could be (a bit ugly) :
- Create a fake project
- Add your custom command on it as POST_BUILD
- Make you current project dependent on the fake one
这篇关于添加自定义的建设步骤的CMake的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!