gpt4 book ai didi

makefile - CMake:是否可以在每次制作后运行 CONFIGURE_FILE?

转载 作者:行者123 更新时间:2023-12-03 14:44:35 29 4
gpt4 key购买 nike

我的 CMake 文件中有以下一段脚本:

CONFIGURE_FILE(
${CMAKE_CURRENT_SOURCE_DIR}/version.hpp.cmake
${CMAKE_CURRENT_SOURCE_DIR}/version.hpp
)

但它只有在执行 cmake 后才运行,不是 make .是否可以创建 version.hpp每次制作后的文件?

这是 version.hpp.cmake的内容:
#ifndef _VERSION_HPP_
#define _VERSION_HPP_

#define MAJOR_VERSION "${MAJOR}"
#define MINOR_VERSION "${MINOR}"
#define PATCH_VERSION "${PATCH}"
#define RELEASE_VERSION "${RELEASE}"

#endif //_VERSION_HPP_
MAJOR , MINOR , PATCHRELEASE变量已在 CMakeLists.txt 中定义文件。

附言 This post显然与我的问题有关,但我无法掌握。

最佳答案

问题是 configure_file 应该在配置时运行,即运行 cmake 时,而不是编译时运行时,即运行 make 时。没有简单的方法可以解决这个问题。

问题是 configure_file 写入的信息依赖于来自 CMake 构建环境的变量。如果不再次运行 CMake,则无法检测到对这些变量的更改。如果您在其他地方镜像了该信息,您可以使用自定义命令提取它并为您执行代码生成,如 Peter's answer 建议的那样。

您的答案中 post from the CMake mailing list that you linked 中建议的方法基于两阶段 CMake 运行:外部 CMake 项目(仅运行一次)添加了一个自定义构建步骤,用于构建内部 CMake 项目(然后与每个 make 一起运行)执行 configure_file 的地方。基本思想与彼得的回答相同,只是您使用 CMake 脚本而不是 Python 脚本来生成文件。

我的个人建议:对于一个简单的问题作为版本标题,我不会打扰这么复杂的方法。只需将文件生成到您的 BINARY_DIR(而不是像您目前所做的那样生成到您的项目目录!您希望保留从同一源进行多个源外构建的能力)并假设它将在那里进行编译。如果用户有足够的勇气去处理那里生成的文件,他们可以自己重新运行 CMake。

关于makefile - CMake:是否可以在每次制作后运行 CONFIGURE_FILE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21657196/

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