在我的项目中,我有一个“模式”文件和实用程序,我写的生成一个头文件。 我使用cmake和源代码构建来构建应用程序。如何使用cmake在源代码中生成头文件?
目前我必须手动重新生成头文件然后构建应用程序。
然后我想出了这个CMakeLists.txt语句,但是他们在构建目录中而不是在源目录中生成头文件。
configure_file(generator.pl generator COPYONLY)
configure_file(schema.txt.in schema.txt COPYONLY)
add_custom_command(
OUTPUT generated.h
COMMAND ./generator schema.txt generated.h
DEPENDS mib_schema.txt.in generator.pl
COMMENT "Regenerating header file..."
)
是否可以在源目录中生成头文件?
编辑(以反映答案):
该文件可以通过完全限定其路径有两种
${CMAKE_CURRENT_SOURCE_DIR}
或直接到达:
${CMAKE_CURRENT_BINARY_DIR}
所以,在我的源代码目录中生成头文件,之前从CMakeLists.txt中摘录的内容变为:
add_custom_command(
OUTPUT generated.h
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/generator.pl ${CMAKE_CURRENT_SOURCE_DIR}/schema.txt.in ${CMAKE_CURRENT_SOURCE_DIR}/generated.h
DEPENDS mib_schema.txt.in generator.pl
COMMENT "Regenerating header file..."
)
这实际上更简单。 感谢
--to
其实,这是一个好主意。如果我可以将生成的文件保存在源代码目录中,它将包含在源代码包中,这正是我想要的(因为只要它们不修改生成器,我的库的用户不需要生成该文件, /或源数据文件)。这意味着更多的人可以编译我的库! – 2013-02-20 05:39:05