在我的项目中,我有一个"schema“文件和实用程序,用于生成一个头文件。我正在使用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}因此,要在我的源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..."
)其实更简单。谢谢
--至
发布于 2010-11-19 12:39:51
我认为生成的标题位于二进制目录中,因为您可能希望创建具有相同源和不同配置的目录,从而生成不同的标头。
您可能希望将构建目录包含到项目中:
include_directories(${CMAKE_CURRENT_BINARY_DIR})https://stackoverflow.com/questions/4225005
复制相似问题