【发布时间】:2010-11-19 12:35:01
【问题描述】:
在我的项目中,我编写了一个“模式”文件和实用程序来生成头文件。 我正在使用 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..."
)
是否可以在源目录中生成header?
编辑(以反映答案):
文件可以通过完全限定其路径来直接访问
${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..."
)
这实际上更简单。 谢谢
--到
【问题讨论】:
-
这其实是个好主意。如果我可以将生成的文件保存在源目录中,它将包含在源包中,这正是我想要的(因为这样我的库的用户就不需要生成文件,只要他们不修改生成器和/或源数据文件。)这意味着更多的人可以编译我的库!