在我的项目中,我有一个“架构”文件和实用程序,用于生成头文件。
我正在使用 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}
or:
${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
我认为生成的标头很好地放置在二进制目录中,因为您可能想要创建具有相同源和不同配置的构建目录,从而导致生成不同的标头。
您可能希望将构建目录包含到您的项目中:
include_directories(${CMAKE_CURRENT_BINARY_DIR})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)