gpt4 book ai didi

cmake - 如何使用CMake将文件中的字符串替换为当前目录的值

转载 作者:行者123 更新时间:2023-12-04 16:53:02 26 4
gpt4 key购买 nike

我正在尝试使其他人的研究代码可再现,以使其他人不会遇到我现在遇到的同样麻烦。但是,我缺乏cmake的经验。这是我阅读文档后可以做的事情:
在与CMakeLists.txt相同的文件夹中,我有一个名为io_utils.h的文件,带有ROOT_PATH变量,其值为VALUE_ROOT_PATH
我想用文件当前目录的值替换该字符串。所以我尝试将以下内容添加到CMakeLists.txt中:

# Set ROOT_PATH in io_utils.h
FIND_PATH(BUILD_PATH CMakeLists.txt . )
FILE(READ ${BUILD_PATH}io_utils.h IO_UTILS)
STRING(REGEX REPLACE "VALUE_ROOT_PATH" "${BUILD_PATH}" MOD_IO_UTILS "${IO_UTILS}" )
FILE(WRITE ${BUILD_PATH}io_utils.h "${MOD_IO_UTILS}")

我试图制作并安装它,但是它不起作用,文件没有更改。我做的事怎么了?

最佳答案

我建议使用configure_file cmake宏的另一种方法。首先,创建一个模板文件,该文件引用计划在cmake中设置的所有变量,然后宏将实际值替换为变量。例如,假设我们有一个模板文件io_utils.h.in,看起来像这样:

const char* ROOT_PATH = "${BUILD_PATH}";

CMakeLists.txt中,您可以执行以下操作:
configure_file( io_utils.h.in io_utils.h )

当您运行 cmake时,它将使用第一个文件作为模板(此处为 io_utils.h.in)来生成第二个文件(此处为 io_utils.h),其值替换为:
const char* ROOT_PATH = "/path/to/CMakeLists.txt";

顺便说一句,CMake有一个内置变量,该变量引用名为 CMakeLists.txt的顶级 CMAKE_SOURCE_DIR的目录。尝试使用此变量替换上面的 BUILD_PATH

关于cmake - 如何使用CMake将文件中的字符串替换为当前目录的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22288644/

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