gpt4 book ai didi

build-automation - 如何使用cmake在源代码中生成头文件?

转载 作者:行者123 更新时间:2023-12-04 15:04:18 25 4
gpt4 key购买 nike

在我的项目中,我编写了一个“架构”文件和实用程序来生成头文件。
我正在使用 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..."
)

是否可以在源目录中生成标题?

编辑(反射(reflect)答案):

可以通过使用以下任一方法完全限定其路径来直接访问该文件
${CMAKE_CURRENT_SOURCE_DIR}

或者:
${CMAKE_CURRENT_BINARY_DIR}

因此,要在我的源目录中生成 header ,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..."
)

这实际上更简单。
谢谢

- 到

最佳答案

我认为生成的头文件很好地放置在二进制目录中,因为您可能希望创建具有相同源和不同配置的目录来生成不同的头文件。

您可能希望将构建目录包含到您的项目中:

include_directories(${CMAKE_CURRENT_BINARY_DIR})

关于build-automation - 如何使用cmake在源代码中生成头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4225005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com