Dav*_*zak 15 c++ build cmake custom-build-step c++11
我正在尝试在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
)
Run Code Online (Sandbox Code Playgroud)
对于文件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})
Run Code Online (Sandbox Code Playgroud)
Pie*_*aud 16
对我来说,类似的东西,我只是使用:
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
)
Run Code Online (Sandbox Code Playgroud)
我们不使用DEPENDS
或VERBATIM
.
该DEPENDS
选项指定只有在构建了为此选项指定的项目之后才能执行该命令.
编辑:
请注意,只有Visual Studio 7或更高版本支持PRE_BUILD选项.对于所有其他生成器,PRE_BUILD将被视为PRE_LINK.
也许这就是为什么它不适合你.
解决方法可能(有点难看):
归档时间: |
|
查看次数: |
22402 次 |
最近记录: |